분류 전체보기

·Project
Intro프로젝트를 거의 완성한 시점에서 적어 보는 주요 키워드 복기 포스팅이다.현재 프로젝트에 어떤 기능을 왜 넣었는지, 이로써 어떤 효과가 있었는지, 아쉬웠던 점은 무엇이었는지 적어 보겠다. Redis로 관리했던 데이터들은 다음과 같다.Refresh Token, Blacklist장바구니상품의 재고사용자 경험이 중요한 이커머스에서 대표적인 해당 데이터들은 자주 변경되고 빠른 접근이 필요한 것이다.따라서 Redis로 관리하기에 적합하다 판단하였다.인메모리 방식의 데이터베이스이므로 대량의 데이터 및 장기 보관에는 적합하지 않다는 점을 신경썼다. 🎈 가독성을 위해 일부 코드를 생략하였습니다.Refresh Token, Blacklist로그인해서 리프레시 토큰이 생성될 때 TTL 설정로그아웃해서 블랙리스트에 ..
·log.info
Resilience4jJava에서 회복 탄력성을 관리하기 위한 라이브러리Circuit Breaker, Retry, Rate Limiter, Bulkhead 등 다양한 패턴 제공Circuit Breaker서비스 간의 실패를 관리하고 격리하는 데 사용특정 서비스가 일정 시간 동안 많은 실패를 하면 해당 서비스로의 호출 차단전체 시스템의 성능 저하 및 장애 방지상태Closed: 정상 상태. 모든 요청이 정상적으로 서비스로 전달Open: 실패율이 임계 값을 초과했을 때 서비스로의 호출 차단 모든 요청 즉시 실패Half-Open: 일정 시간이 지나면 일부 요청 허용해서 서비스가 정상으로 돌아왔는지 확인 → 성공하면 Closed, 실패하면 Open 상태로 전환설정slidingWindowSize: Circuit Br..
·log.info
Intro서비스가 확장되면 데이터 통합 문제가 훨씬 더 복잡해진다.정보를 공유하기 위해서는 모든 데이터를 다른 시스템에 전송해야 하기 때문이다.여기서 데이터의 전반적인 형상이 변하면 어떻게 될까? 모든 연결과 데이터 추출을 위한 요청으로 인해 부하가 증가하게 될 것이다.여기서 Apache Kafka를 이용해서 스케일링할 수 있다.Kafka는 분산형이고 회복력 있는 아키텍처이며, 수평적 확장성이 있다.고성능이며 메세지 처리 규모가 매우 크다.(수백만/s) 활용 사례: 메시징 시스템, 활동 추적 시스템, 애플리케이션 로그 수집, 스트림 처리 등 1️⃣ 토픽, 파티션, 오프셋Kafka 토픽    ➡ Kafka 클러스터 안에 있는 데이터 스트림 즉, 데이터베이스의 테이블(제약조건X)    ➡  모든 종류의 메시..
·Trouble Shooting
문제 상황리프레시 토큰, 액세스 토큰을 발급 받는 로직은 모두 정상적으로 동작하고,포스트맨에서도 일회적이지만 처음 로그인 할 때 헤더에 토큰 값이 들어왔다.하지만 사진과 같이 다른 api 요청을 호출하면 헤더에서 토큰들이 감쪽같이 사라지는 오류가 발생한다.당연히 웹에서도 동일한 오류가 발생한다....그나마 포스트맨은 자체적으로 세션이랑 쿠키를 관리해서 망정이지.. 이마저도 아니었으면 테스트 하나도 못 했음//SecurityConfighttp.addFilterBefore(jwtAuthorizationFilter, UsernamePasswordAuthenticationFilter.class);//JwtAuthorizationFilter@Slf4j@RequiredArgsConstructorpublic clas..
·TIL
Intro블로그 글을 자주 못 쓴 이유: 프로젝트 하느라틈 날 때마다 블로그 글 쓰는 게 목표였는데 생각보다 할 게 너~무 많고삽질을 너~~~~무 많이 해서;; 쓸 시간이 없었음삽질1Docker 설정처음부터 개발한 애플리케이션의 이미지를 빌드하고 컨테이너로 띄우는 줄 알았는데그냥 DB만 띄우면 되는 거였음..ㅋㅋㅋㅋ지금까지 배운 도커 개념들이 아까울 정도로 너무 간단했음 ㅠservices: db: image: postgres:latest container_name: uni-shop-postgres env_file: - postgres.env ports: - 5432:5432 volumes: - ./data:/var/lib/postgresql/data..
·log.info
Intro프로젝트 진행 중 순수 액세스 토큰만으로 로그인 및 로그아웃, 회원가입을 구현했더니액세스 토큰이 만료된 시점에서 갑자기 JWT 토큰이 만료됐다면서 모든 기능이 마비됐었다.인터넷 쿠키, 캐시 삭제도 해보고, DB를 싹 비워봐도 해결이 안 되길래 찾아 봤더니액세스 토큰만으로 이 기능들을 구현하기엔 불안정하다고 하더라.구체적으론 보안, 안정성, 사용자 경험 면에서 어려움이 있다고 한다.그래서 리프레시 토큰을 사용해서 액세스 토큰을 갱신하는 방식으로 진행했다.(문제 원인은 토큰 만료 후 후처리를 제대로 하지 않은 것 같다..)Refresh Token을 사용하는 이유액세스 토큰의 짧은 만료 시간 보완    ➡ 액세스 토큰은 보안 강화를 위해 짧은 만료 시간을 가진다. 사용자 입장에선 매우 불편하다.   ..
·TIL
알고리즘 마무리?라기엔,, 앞으로 매일 1문제씩 푸는 걸 목표로 하고 있지만 아무튼 공식 알고리즘 주차 일정이 마무리 되었다. 나는 항해 들어오기 전에 알고리즘 공부를 한 달 정도 하긴 했는데, 사실 그렇게 빡세게 하지 않았고 아~주 쉬운 개념들만 배우고 온 거였다. 그래서 항해 사전 과정 때 파이썬 알고리즘 반을 선택했다가 문제 수준에 기겁하고 알고리즘을 더 열심히 공부한 기억이 있다😂 물론 지금도 매우매우 x 999 어렵다. 알고리즘 과정을 거치면서 단시간에 많은 걸 배울 수 있었다. 아무래도 하루종~~~~일 알고리즘 풀이하고, 오후엔 스터디 하고 매니저님 멘토링까지 받으니까 알고리즘에 대한 시야가 확장될 수 밖에 없다. 그러타.. 아직 하찮은 실력이지만 그래도 처음에 비해 많이 늘었다고 생각한다. ..
·log.info
Intro공식 문서 < 여기 여러 컨테이너를 결합하여 하나의 애플리케이션을 빌드하려면 매우 긴 명령어를 수행해야 한다. 여기서 Docker Compose라는 도구를 통해 다중 컨테이너 설정을 더 쉽게 관리할 수 있다. 설정 프로세스를 자동화 해주고, 단 하나의 명령과 하나의 구성 파일로 모든 컨테이너를 시작하고 제어할 수 있다.Docker Compose란?docker build와 docker run 명령을 대체할 수 있는 도구다수의 docker build, docker run을 단 하나의 구성 파일로 가짐오케스트레이션 명령 셋(set)하나의 명령을 사용하여 다중 컨테이너 애플리케이션을 시작 및 중단 가능다른 사람과 공유 가능Docker Compose는 Dockerfile을 대체하지 않는다. 오히려 Doc..
·log.info
Intro코드를 변경할 때마다 이미지를 다시 빌드하지 않는 한 실행 중인 컨테이너에 변경 사항이 반영되지 않는다.이는 도커 이미지가 생성될 때 폴더의 스냅샷만 복사하므로, 복사한 뒤 발생하는 변경 사항은 컨테이너에 반영되지 않기 때문에 그런 것이다.하지만 개발 중에 도커를 사용한다면 변경 사항이 즉시 반영되는 것이 편할 것이다.(아니면 매번 리빌드해야된다,,😇)이를 바인드 마운트가 도와준다!볼륨과의 차이점컴퓨터의 파일 시스템 상의 어디에 위치해 있는지 알 수 있다.    ➡  컴퓨터 상에 매핑될 컨테이너의 경로를 설정하기 때문이다.소스 코드를 넣을 수 있다.    ➡  이렇게 하면 컨테이너가 인식해서 바인딩 마운트에서 코드를 복사한다.           (최신 코드에 액세스 가능!)영구적이고 편집 가능..
wool_
'분류 전체보기' 카테고리의 글 목록