- 단순 CRUD를 넘어 진짜 백엔드로 가는 길2025년 05월 27일 14시 35분 41초에 업로드 된 글입니다.작성자: do_hyuk728x90반응형
✅ 학습할 주제 정리
1. 고성능 트래픽 처리
- Java: Thread, ExecutorService, CompletableFuture, ReentrantLock, synchronized 등 동시성 제어
- Spring: WebFlux 기본 개념 (reactive)
- 기타: Rate Limiting, Queue 기반 처리, Load Shedding 개념
2. 정산 로직 및 정확한 계산
- Java: BigDecimal, 날짜 및 시간 처리 (LocalDateTime, ZonedDateTime)
- Spring: Batch 처리 (Spring Batch)
- 기타: 트랜잭션 관리, 분산 락 (e.g. Redis-based Lock)
3. 무중단 배포 및 MSA 환경
- Java: 인터페이스 분리, 모듈화 설계
- Spring: Spring Cloud, Spring Boot Actuator, Health Check
- 기타: Canary/Blue-Green 배포, API Gateway, Circuit Breaker (e.g. Resilience4j)
4. OpenAPI 기반 API 설계 및 구현
- Spring: Springdoc OpenAPI, Swagger UI
- Java: DTO <-> Entity 매핑, Validation (@Valid, @NotNull 등)
- 기타: API 버전 관리, 인증/인가 처리 (JWT, OAuth2)
💻 사전 과제 스타일 미니 프로젝트 (실습용)
🔹 과제 1: 초당 수천 건의 결제를 처리하는 API 만들기
✅ 목표: 트래픽 처리를 위한 큐/비동기 처리 학습
요구사항
- POST /payments 로 결제 요청을 받는다.
- 내부에서 큐 (예: ConcurrentLinkedQueue) 또는 비동기 작업으로 저장/처리
- 동시에 1000개의 요청을 보내도 처리 가능해야 함
- 처리 시간과 결과 로그 기록
🔧 키워드: @Async, ThreadPoolTaskExecutor, ConcurrentLinkedQueue, ExecutorService, CountDownLatch
🔹 과제 2: 정산 계산 시스템 구현하기
✅ 목표: 복잡한 요구사항을 정확하게 계산하고 테스트 가능하도록 설계
요구사항
- 하루 동안 발생한 거래 데이터를 기반으로 수수료를 계산
- 각 거래에 따라 수수료 정책이 다름 (고정, 비율, 최소 보장 등)
- 정확성을 위해 BigDecimal 사용
- 테스트 코드로 다양한 계산 케이스 검증
🔧 키워드: BigDecimal, @Service, @Test, 전략 패턴 설계
🔹 과제 3: OpenAPI 기반의 정산 조회 API 만들기
✅ 목표: API 명세 자동화 및 클라이언트 친화적인 API 설계
요구사항
- GET /settlements?merchantId=123&date=2025-05-01
- 반환값: 해당 일자 정산 정보 (정산 금액, 수수료, 거래건수 등)
- Swagger UI로 API 테스트 가능
- 응답 포맷을 명확히 설계
🔧 키워드: @RestController, @GetMapping, @Parameter, springdoc-openapi-ui
🔹 과제 4: 무중단 배포를 위한 Health Check 구현
✅ 목표: 배포 환경에서의 안정성 고려
요구사항
- /healthz 엔드포인트를 구현
- DB 연결 여부, 외부 API 연결 여부 등 점검
- Actuator 포함, 상태 로그 기록
🔧 키워드: spring-boot-starter-actuator, HealthIndicator, /actuator/health
📚 보너스: 실무 감각을 위한 추가 학습
- Kafka, Redis 등 메시지 기반 설계
- 테스트 주도 개발(TDD)
- CI/CD 파이프라인 이해 (Github Actions, Jenkins 등)
- MSA 환경에서의 서비스 간 통신 (FeignClient, RestTemplate)
728x90반응형'백엔드' 카테고리의 다른 글
NOT IN 쿼리를 사용할 때 발생할 수 있는 문제와 최적화 방법에 대해 설명해 주세요. (0) 2025.05.12 Elasticsearch란? (0) 2025.04.24 Full-Text Search 사용법 (0) 2025.04.22 [MySQL] LIKE 문의 동작 방식과 Index와의 관계 (0) 2025.04.21 성능테스트를 위한 K6 사용법 (0) 2025.02.24 댓글