티스토리 뷰
업무용 응용프로그램 개발 방안
- A고객사 시스템의 채널 확대 및 사용자 증가에 따라 발생하는 인증 및 세션 관리 문제 해결을 위한 인증 방식 개선 방안
- A고객사 비즈니스 유연성과 성능 관점에서 상품을 관리하기 위한 데이터 모델을 새롭게 설계하고 설계 사유 제시
- 예약 처리 프로세스와 데이터 모델에서 발생하고 있는 동시성 이슈의 해결 방안 제시
Works AI
업무용 응용프로그램 개발 방안
1. 인증 방식 개선 방안
A고객사 시스템의 채널 확대 및 사용자 증가에 따라 발생하는 인증 및 세션 관리 문제 해결
현황 및 문제점:
- 다양한 채널(웹, 모바일 앱, API 등)에서 인증이 필요.
- 사용자 증가로 인해 세션 관리와 인증 처리 속도가 문제됨.
개선 방안:
- OAuth 2.0 도입:
- 다양한 클라이언트에서 안전하게 리소스에 접근할 수 있도록 하고, 토큰을 기반으로 한 인증 방식을 사용.
- 시스템 확장성과 유연성을 보장.
- JWT (JSON Web Token):
- 클레임(claim)을 포함한 토큰을 사용하여 사용자 인증 정보를 안전하게 전달.
- 토큰 기반 접근 방식으로 서버의 세션 관리를 간소화하고 성능을 향상.
- 싱글 사인온(SSO) 도입:
- 한 번의 로그인으로 모든 채널에서 접근 가능하게 함.
- 사용자 경험을 개선하고 보안성을 강화.
- 도커라이징:
- 인증 서비스를 도커 컨테이너로 분리함으로써, 확장성을 제공하고, 필요 시 컨테이너를 쉽게 확장.
2. 데이터 모델 설계 방안
A고객사 비즈니스 유연성과 성능 관점에서 상품을 관리하기 위한 데이터 모델을 새롭게 설계
현황 및 문제점:
- 기존 데이터 모델이 비즈니스 요구사항에 비해 유연성이 부족.
- 데이터 구조가 복잡하여 성능 저하 문제 발생.
개선 방안:
- 정규화 vs 비정규화:
- 비즈니스 요구사항에 따라 데이터의 중복을 허용하는 비정규화 접근 방식을 선택하여 성능을 향상.
- 필요 시 데이터베이스 정규화를 통해 데이터 일관성을 유지.
- ERD (Entity-Relationship Diagram) 재설계:
- 상품 카테고리, 속성, 가격 등 다양한 속성을 고려하여 데이터베이스 구조 재설계.
- 필수적인 제약조건과 인덱스를 명시적으로 정의하여 쿼리 성능 최적화.
- NoSQL 데이터베이스 도입:
- 상황에 따라 유연한 스키마를 제공하는 NoSQL 데이터베이스 사용.
- 비정형 데이터를 효과적으로 관리하고, 확장성 높은 데이터 처리가 가능.
- 캐싱 전략 도입:
- 자주 변하지 않는 데이터를 Redis나 Memcached와 같은 캐시 서버에 저장하여 데이터베이스 부하를 줄임.
- 읽기 중심의 데이터 처리에서 성능 향상 효과.
3. 동시성 이슈 해결 방안
예약 처리 프로세스와 데이터 모델에서 발생하고 있는 동시성 이슈 해결
현황 및 문제점:
- 높은 동시성 접속으로 인해 예약 처리에서 데이터 충돌 및 성능 저하 문제 발생.
개선 방안:
- 낙관적 잠금 (Optimistic Locking):
- 트랜잭션이 완료될 때까지 데이터를 잠그지 않으며, 변경 시점에 데이터 일관성을 확인.
- 충돌이 발생할 경우 재처리 로직을 추가하여 안정성 보장.
- 비관적 잠금 (Pessimistic Locking):
- 데이터 수정 및 조회 작업 전에 먼저 잠금을 거는 방식으로, 동시성 문제를 원천적으로 방지.
- 중요한 데이터 처리 시 적용.
- CQRS (Command Query Responsibility Segregation):
- 읽기(read)와 쓰기(write) 모델을 분리하여 동시성 문제를 최소화.
- 읽기 작업을 위한 데이터베이스와 쓰기 작업을 위한 데이터베이스를 분리하여 성능 최적화.
- 메시지 큐 (Message Queue) 도입:
- 예약 요청을 메시지 큐에 기록하고, 큐에 저장된 메시지를 차례로 처리하여 동시성 문제 해결.
- 아키텍처의 유연성과 확장성을 보장하여 부하 분산.
이와 같은 개선 방안을 통해 A고객사의 시스템이 더욱 안정적이고 유연하게 운영될 수 있도록 도울 수 있으며, 성능 향상 및 사용자 경험 개선을 기대할 수 있습니다.