항해 플러스 백엔드 5기
-
부하를 적절하게 축소하기 (2)항해 플러스 백엔드 5기 2024. 8. 4. 18:41
1. 비즈니스 로직과 트랜잭션의 범위2. 애플리케이션 이벤트를 통한 관심사 분리2. 서비스의 분리고려사항현재 구현사항 중 트랜잭션 범위 및 비즈니스 로직 융합에 따른 문제에 대해 분석이 적절한지규모의 확장으로 서비스를 분리해야할때의 서비스 분리에 대한 아키텍처 설계가 적절한지서비스가 분리되기에 발생하는 현재 비즈니스의 트랜잭션을 보장하는 방식이 적절한지.비즈니스 로직에 부가기능 (데이터 전송, 이력 저장 등) 이 추가되었을 때, 발생하는 문제 및 해결방안을 고려하여 코드에 적용해 보았는지내가 개발한 기능의 트랜잭션 범위서비스의 규모 확장시 서비스 분리 방안서비스 분리에 따른 트랜잭션 처리의 한계와 해결 방안과 서비스 설계 문서
-
부하를 적절하게 축소하기 (1)항해 플러스 백엔드 5기 2024. 8. 4. 18:28
1. DB Query Optimization다량의 트래픽이 유입되는 경우 데이터의 조회 쿼리 성능은 인덱스와 함께 하느냐, 아니냐에 따라서 성능은 하늘과 땅 차이. 인덱스는 조회 성능을 높일 수 있지만 다음과 같은 사항들이 고려되어 설계되어야 함.한번에 찾을 수 있는 값 - 데이터 중복이 적은 컬럼인덱스 재정렬 최소화 - 데이터 삽입, 수정이 적은 컬럼인덱스의 목적은 검색 - 조회에 자주 사용되는 컬럼너무 많지 않은 인덱스 (약 3~4개) - 인덱스 또한 공간을 차지함인덱스 Column의 기준인덱스 대상 컬럼의 핵심은 높은 카디널리티(Cardinality) - 카디널리티: 데이터의 중복 수치사용자 테이블 (이름, 성별, 나이, 계좌번호, .. ) 있다.만약 인덱스 설정을 통해 사용자 조회 성능을 높이려..
-
7주차 회고노트항해 플러스 백엔드 5기 2024. 8. 3. 16:14
1. 이번 과제주제: 적은 부하로 트래픽 처리하기Step13조회가 오래 걸리는 쿼리에 대한 캐싱, 혹은 Redis 를 이용한 로직 이관을 통해 성능 개선할 수 있는 로직을 분석하고 이를 합리적인 이유와 함께 정리한 문서 제출 Step14Caching을 활용하여 부하를 최소화할 수 있는 비즈니스 로직을 파악해보고, 적절한 Caching Strategy를 적용하는 코드를 작성하여 제출2. 회고✏️ 문제과제, 프로젝트를 진행하면서 부딪혔던 기술적인 문제이번 주차를 지나며 겪었던 문제가 무엇이었나요?인기 상품 목록 조회의 경우 Redis 데이터 최신화를 어떤 방식, 주기로 가져갈 것 인지에 대한 고민여러 Redis 전략 중 적용하려는 기능과 가장 적합한 전략이 어떤 것 인지에 대한 고민✏️ 시도문제를 해결하..
-
적은 부하로 트래픽 처리하기항해 플러스 백엔드 5기 2024. 7. 29. 20:09
1. CachingCache란?데이터를 임시로 복사해두는 Storage 계층적은 부하로 API 응답을 빠르게 처리하기 위해서 캐싱을 사용Cache 사용사례DNS : 웹사이트 IP 를 기록해두어 웹사이트 접근을 위한 DNS 조회 수를 줄인다.CPU : 자주 접근하는 데이터의 경우, 메모리에 저장해두고 빠르게 접근할 수 있도록 한다.CDN : 이미지나 영상과 같은 컨텐츠를 CDN 서버에 저장해두고 애플리케이션에 접근하지 않고 컨텐츠를 가져오도록 해 부하를 줄인다.2. Server Caching 전략2.1. 메모리 캐시 (Application Leval)애플리케이션의 메모리에 데이터를 저장해두고 같은 요청에 대해 데이터를 빠르게 접근해 반환함으로서 API 성능 향상 달성Spring의 경우 ehcache, ca..
-
6주차 회고노토항해 플러스 백엔드 5기 2024. 7. 27. 16:27
1. 이번 과제주제: e-커머스 서비스 개발Step11: 나의 시나리오에서 발생할 수 있는 동시성 이슈에 대해 파악하고 가능한 동시성 제어 방식들을 도입해보고 각각의 장단점을 파악한 내용을 정리 제출구현의 복잡도, 성능, 효율성 등README 작성 혹은 외부 링크, 프로젝트 내의 다른 문서에 작성하였다면 README에 링크 게재Step12: DB Lock 을 활용한 동시성 제어 방식 에서 해당 비즈니스 로직에서 적합하다고 판단하여 차용한 동시성 제어 방식을 구현하여 비즈니스 로직에 적용하고, 통합테스트 등으로 이를 검증하는 코드 작성 및 제출2. 회고✏️ 문제과제, 프로젝트를 진행하면서 부딪혔던 기술적인 문제이번 주차를 지나며 겪었던 문제가 무엇이었나요?특정 사용자의 포인트 충천이 동시에 들어오는 요청..
-
e-커머스 서비스 동시성 문제와 극복항해 플러스 백엔드 5기 2024. 7. 22. 20:12
e-커머스 서비스 동시성 문제를 해결하면서 알게 된 내용을 정리해보고자 한다.1. 동시성 문제란?여러 작업(프로세스, 스레드, 트랜잭션 등)이 수행되면서 하나의 공통 자원에 대해 동시에 접근할 때 발생하는 문제Database 의 동일한 데이터에 동시에 여러 작업이 수행될 때, 의도하지 않은 작업 결과가 발생하는 경우를 의미한다.동시성 문제를 이해하기 위해 아래의 예시를 살펴보자. 아래는 예시는 재고차감 시나리오이다.Request 1 주문 요청이 들어오고 상품의 데이터를 조회하여 상품의 갯수가 10개인걸 확인하고 재고를 하나 차감하여 상품의 재고가 9개가 남았음을 커밋을 시도하려고한다.Request 2 주문 요청이 들어오고 아직 Request 1 주문 요청에 대한 트랙잭션 커밋이 되기 전으로 상품의 갯수..
-
5주차 회고노트항해 플러스 백엔드 5기 2024. 7. 21. 01:17
1. 이번 과제주제: e-커머스 서비스 개발Step9 : API Swagger 작성필요한 Filter, Interceptor 등의 기능 구현예외 처리, 로깅 등 유효한 부가로직의 구현Step10 : Usercase 별 통합 테스트 작성정상적으로 구동되는 서버 애플리케이션 완성제공해야 하는 API 완성서버구축 챕터 마무리 회고록 작성 (NICE TO HAVE)2. 회고✏️ 문제과제, 프로젝트를 진행하면서 부딪혔던 기술적인 문제이번 주차를 지나며 겪었던 문제가 무엇이었나요?Filter, Interceptor 란 무엇이고 각각 어떤 역할들을 수행하는가?Filter에 로깅 처리를 어떤식으로 구현 할 것 인가?AOP란 정확히 무엇이고 관점 지향 프로그래밍이란 무엇인가?비즈니스 로직에서 어떤 로그들을 어떤식으로 ..
-
1 ~ 5주차 서버구축 챕터 회고록항해 플러스 백엔드 5기 2024. 7. 19. 02:05
1. 현재까지 진행한 챕터 내용3 ~ 5주차 : 서버 구축 (e-커머스 서비스 개발)시나리오 선정 및 프로젝트 Milestone 제출시나리오 요구사항 분석 자료 제출 (e.g. 시퀀스 다이어그램, 플로우 차트 등 )ERD 설계 자료 제출API 명세 및 Mock API 작성Github Repo 제출 ( 기본 패키지 구조, 서버 Configuration 등 )API Swagger 작성주요 비즈니스 로직 개발 및 단위 테스트 작성비즈니스 Usecase 개발Usecase 별 통합 테스트 작성필요한 Filter, Interceptor 등의 기능 구현예외 처리, 로깅 등 유효한 부가로직의 구현제공해야 하는 API 완성2주차 : 클린 아키텍처ERD 작성클린 + 레이어드 아키텍처API 기능 개발 (특강 신청/특강 신청..