일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 가상면접3장
- cypress React
- cypressBDD
- git commit merge
- s3이미지다운로드됨
- 가상면접2장
- formik react-query submitting not working
- react-ga
- file not found Error
- 가상면접으로대규모시스템
- react
- 시스템설계방법
- 리팩토링2판4장
- 리팩터링2판테스트
- 리액트구글애널리틱스
- 시스템설계면접팁
- 테스트코드책
- 헤드퍼스트전략패턴
- git squash
- Git commit 합치기
- FirebaseAnalytics
- git commit 협업
- formik submitting not working
- 시스템설계면접
- 디자인패턴
- 시스템설계면접예시
- 시스템설계
- awss3
- 전략패턴
- gitsquash
- Today
- Total
목록BackEnd (51)
mingg IT
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cc9L5n/btsvMJnJxFr/WivgG1CwKmdebfAqQebgw0/img.png)
상황 갑자기 결제 관련된 부분에서 간헐적으로 500 에러가 뜨기 시작했다. 분명 추가로 배포한 사항도 없는데 무수한 에러를 뱉어내고 있었다. 에러 로그는 결제가 실패했다고만 뜨고있어서, 결제가 실패한 시간대의 로그를 살펴보니 아래와 같은 에러를 뱉어냈다. 구글링을 해보아도 특별히 해결 방법이 많이 나오지 않는다. Redis 버전이 문제가 있을 수 있다고 이야기 한다. 추측 결제시 마이그레이션 된 유무를 파악하기위해 Redis를 쓰고 있었다. 해당 시점은 마이그레이션이 끝나고 난 이후기 때문에 우선 Redis를 사용하고있는 모든 로직을 걷어내기 시작했다. 원인 aws > 샤드 및 노드가 1개 추가되어 있었다. aws > 이벤트 또한 수정되어 있었다. 타 회사와 협업을 하면서 aws 계정을 공유하는데 수정 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/QCAFB/btsvlKzELqP/3aF7pMqh0Ay8WfRv4p4mRK/img.png)
상황 postgreSQL을 localhost만 사용하다가 rds로 endPoint를 옮기고 EC2에 서버를 띄웠다. 스프링 부트 프로젝트에선 datasource url등을 바꾸고 실행했을때 문제가 없었다. 허나 EC2 인스턴스 에러로그가 발생했다. (아래 첨부) org.postgresql.util.psqlexception: the connection attempt failed 를 포함한 무수히 많은 에러를 뱉어냄 원인 로그를 자세히 읽어보면 DB에 접근을 못하고 있다함 RDS 인바운드 규칙에 내가 띄운 EC2의 퍼블릭 IP가 추가되어있지 않아서임 해결 RDS의 인바운드 규칙에 EC2의 퍼블릭 ip 혹은 보안그룹 ID를 추가해서 접근이 가능하도록 수정함 아래 블로그에 잘 설명되어있어서 참고함 https:/..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/vqmMg/btssVJvYOaK/M7K5WIFpuRQvfzjkX5dvJk/img.png)
EC2 배포 ci/cd Actions를 구현하고 있던 와중에 아래와 같은 명령어가 발생했다. nohup: failed to run command 'java': No such file or directory 원인은 사실 너무 간단했다. 우분투 환경에 java가 설치되어 있지 않았던 것. 해결 방법 $ sudo apt-get update $ sudo apt-get install openjdk-17-jdk 난 17버전을 설치했다. java -version 으로 확인이 가능하다.
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/26ttc/btsrR3a0yVo/o42b4ekWHgYXMs6zRpdxL0/img.png)
드디어 올 것이 왔다. 미루고 미루다가 미룰 순 없어서 애플 로그인을 구현했다. Rest-API 방식을 이용한 예시는 많은데, Spring Security Oauth2.0 Client를 이용한 레퍼런스가 다른 SNS 로그인에 비해 매우 적었다. 개발하는 기간동안 나름 고생을해서 이번에 정리해두려고 한다. application.yml에 apple 정보 추가 security: oauth2.client: registration: apple: clientId: {애플로부터 받은clientId} clientSecret: {애플로부터 받은 key 파일}.p8 redirectUri: "${backend-rooturl-origin}/login/oauth2/code/apple" authorizationGrantType:..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/t4Nlh/btspgnC6wgg/9Xvyklh2f04ygYlXJs4Ow1/img.png)
쿼리의 성능을 향상시킨 경험에 대해 적어보려고 한다. 처음부터 내가 해당 방식을 이용한 것은 아니다. 아래의 시행 착오를 겪었었고, 최종적으로 선택한 방안에 대해 공유하려고 한다. 쿼리 모두 분해 SUBSTRING, CONVERT 등 없에고 자바 로직으로 해결 함수 인덱스 적용 VirtualColumn 추가 및 인덱스 적용 문제 사용하고있는 검색 쿼리가 매우 느려서 개선이 필요했다. @Query("SELECT u FROM User u WHERE " + "u.completed = true AND " + "(u.username = :searchTerm OR " + "SUBSTRING(u.phone, LENGTH(u.phone) - 7) = :searchTerm OR " + "LOWER(u.userId) = ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bcZ74Y/btsn87H2uXe/v2XEGTzg5eHXKm0Aw1ug31/img.png)
라이브나 스테이징 DB내 데이터를 로컬로 옮겨와 테스트 해야할 상황이 발생했다. 사실 라이브용 DB를 덤프뜨는 건 실제 서비스에 무리가 갈 수도 있고, 용량이 커질수록 다 비용이기 때문에 지양하는게 최대한 좋다. 이로인해 덤프뜨는 작업을 자주 하지 않는데, 할 때마다 겪은(반복적인) 문제에 대한 해결책을 정리하고자 한다. mysql-client path를 못 찾는 현상(/opt/homebrew/opt/mysql-client/bin) mysql-client를 설치했다면 opt내 path를 찾아와야하는데 도저히 안 보인다. 해결법 command + shift + g 로 검색창을 띄운뒤 path를 붙여넣기 한다. 드디어 찾았다. 이제 선택하고 Start를 누르면 dump가 떠진다. the SUPER, SYST..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bf7mUV/btsmYK1yykR/F6YTWj5B26JJuv4RG1cyjk/img.png)
3장 시스템 설계 면접 공략법 시스템 설계 면접의 평가 요소 설계 능력의 기술적 측면 협력에 적합한 사람인지 압박이 심한 상황도 잘 헤쳐 나갈 자질이 있는지 모호한 문제를 건설적으로 해결할 능력이 있는지 좋은 질문을 던질 능력능력이 있는지 과도한 엔지니어링을 하는지 효과적 면접을 위한 4단계 접근법 1단계 문제 이해 및 설계 범위 확정 면접 질문에 대해 바로 나의 생각을 답하는 것 보단 시스템 구축에 필요한 정보를 모아야 한다. 아래는 질문 예시이다. 구체적으로 어떤 기능들을 만들어야 하나? 제품 사용자 수는 얼마나 되나? 회사의 규모는 얼마나 빨리 커지리라 예상하나? 석, 달, 여섯 달, 일년 뒤의 규모는 얼마나 되리라 예상하나? 회사가 주로 사용하는 기술 스택은 무엇인가? 설계를 단순하게하기 위해 활..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/ctAeVi/btsmQDig5As/sWlH8moc7R2IsRvOGFALO0/img.png)
개략적인 규모 추정 시스템 용량이나 성능 요구사항을 개략적으로 추적하는 행위 2의 제곱수데이터 볼륨의 단위를 2의 제곱수로 표현 응답 지연 값연산별 처리 속도 ns(나노초), us(마이크로초), ms(밀리초)이다. 아래는 쉽게 시각화 한 수치이다. 메모리는 빠르지만 디스크는 아직도 느리다디스크 탐색(seek)은 되도록 피해라단순한 압축 알고리즘은 빠르다(데이터를 인터넷으로 전송하기 전에 가능하면 압축해라)데이터 센서는 보통 여러 지역으로 분산되어 있고, 센서들 간에 데이터를 주고받는 데는 시간이 걸림 고가용성시스템이 오랜 시간 동안 지속적으로 중단 없이 운영될 수 있는 능력을 의미함. 100%에 가까울수록 시스템이 단 한 번도 중단된 적 없음을 나타냄. 아마존, 구글, 마이크로소프트등은 99% 이상을 제..