답변에 포함해야 할 키워드
- 마이크로서비스(MSA): 서비스를 작은 단위로 나누어 독립적으로 배포 및 운영
- 오토스케일링(Auto-scaling): 클라우드에서 트래픽 증가에 따라 서버를 자동으로 확장
- 로드 밸런싱: 여러 서버에 트래픽을 분산하여 성능 최적화
- CAP 이론: 일관성(Consistency), 가용성(Availability), 파티션 허용성(Partition tolerance) 간의 트레이드오프
- Kubernetes: 분산 환경에서 컨테이너 관리
- 로드밸런싱이 무엇이며, 이를 통해 얻을 수 있는 이점은 무엇인가요?
- 마이크로서비스 아키텍처에서 서비스 간 통신을 위한 메시지 브로커를 사용하는 이유를 설명해주세요
- 분산 트랜잭션이란 무엇이며 이를 관리하는 방법을 설명해주세요
- 클라우드에서의 오토스케일링이 무엇이며 ,이를 구현할 대 고려해야 할 요소는 무엇인가요?
- 쿠버네티스의 역할과 사용 이유에 대해 설명해주세요
1. 로드밸런싱
로드밸런싱이 무엇이며, 이를 통해 얻을 수 있는 이점은 무엇인가요?
로드밸런싱이란?
- 여러 서버에 트래픽을 분산하여 부하를 고르게 나누는 기술
- 특정 서버에 과부하가 걸리는 것을 방지하고 전체적인 서비스 성능과 안정성 향상
주요 이점
- 성능 향상 : 요청을 여러 서버에 분산하여 응답 시간 단축, 처리 속도 향상
- 가용성 및 안정성 확보 : 특정 서버에 장애가 발생해도 다른 서버가 트래픽을 처리할 수 있음
- 확장성 : 더 많은 요청 처리 가능
- 보안 강화 : 악의적인 트래픽을 특정 서버가 집중적으로 받는 것을 방지할 수 있음
- 유지보수 용이 : 특정 서버 유지보수중에도 다른 서버가 트래픽 처리 가능 → 무중단 운영
구현 방식
- 소프트웨어 기반
- 리버스 프록시 기반 : NginX
- 애플리케이션 레벨 로드밸런싱 : Spring Cloud
- 클라우드 기반 : ELB
- 하드웨어 기반
- 네트워크 레벨에서 부하 분산
- 가격이 비쌈, 고성능, 높은 안정성
2. 메시지 브로커
마이크로서비스 아키텍처에서 서비스 간 통신을 위한 메시지 브로커를 사용하는 이유를 설명해주세요
마이크로서비스 아키텍처에서 메시지 브로커를 사용하는 이유
- 서비스 간 통신이 필수적
- 비동기 통신, 성능 향상, 장애 격리, 확장성 등의 장점
메시지 브로커
- 서비스 간 데이터를 전달하는 중간 역할을 하는 시스템
- Kafka, RabibitMQ, Redis Pub/Sub
동작방식
- producer → 메시지를 브로커에 전송
- Message broker → 메시지를 저장하고 전달
- Consumer : 메시지를 구독하고 처리
MSA에서 메시지 브로커를 사용하는 이유
- 서비스 간 결합도 낮추기 : 비동기 방식으로 통신하여 서비스 간 독립성 유지
- 성능 및 확장성 : 서비스 요청이 많을 때 큐를 사용해 부하 분산, 병렬 처리 가능(Kafka consumer gruop)
- 장애 격리 : 다운된 서비스가 나중에 복구되면 이전 메시지를 받아 다시 처리 가능
- 이벤트 기반 아키텍처 : 특정 이벤트 발생 시 관련 서비스들이 자동으로 반응
- 데이터 유실 방지 : 메시지를 저장하고 소비자가 읽을 때까지 유지
rabbit Mq - 메시지 순서 보장 x, 스케일아웃 제한적, 단일 메시지에 최적화 kafka - 고성능, 수평 확장 가능, 메시지 순서 보장 o
3. 분산 트랜잭션
분산 트랜잭션이란 무엇이며 이를 관리하는 방법을 설명해주세요
분산 트랜잭션
- 여러 개의 서로 다른 시스템에서 실행되는 트랜잭션을 하나의 논리적 단위로 관리하는 개념
2 phase commit
- 트랜잭션을 2단계로 나누어 커밋하는 기법
- 분산시스템에서 모든 참여 노드가 커밋 가능 여부를 확인한 후 최종적으로 커밋 실행
- 장점 : 트랜잭션 원자성 보장
- 단점 : 네트워크 장애 발생 시 데드락 위험
- → 금융권처럼 강력한 일관성이 필요한 경우 사용
보상 트랜잭션(saga pattern)
- 트랜잭션을 여러개의 작은 로컬 트랜잭션으로 나누고 실패 시 보상 작업을 수행하는 방식
- INSERT → DELETE, CREATE → DROP, UPDATE → 재 UPDATE
- 순차실행
- 각 서비스가 다음 서비스에게 이벤트를 전달하며 트랜잭션 실행
- 실패시 보상 이벤트 실행
- 오케스트레이션
- 중앙 조정자가 트랜잭션 관리
- 실패 시 보상 트랜잭션 실행
4. 오토 스케일링
클라우드에서의 오토스케일링이 무엇이며 ,이를 구현할 대 고려해야 할 요소는 무엇인가요?
오토 스케일링
- 클라우드 환경에서 트래픽 변화에 따라 자동으로 인프라 리소스를 조정하는 기능
- 부하가 증가하면 인스턴스를 자동으로 추가하여 성능 유지
- 부하가 감소하면 불필요한 인스턴스를 제거하여 비용 절감
오토스케일링 방식
- 수평 확장
- 인스턴스 개수 동적 조정
- 부하 증가 시 새로운 서버 추가
- 부하 감소 시 서버 감소
- AWS Auto Scaling group
- 수직 확장 (스케일 업)
- 서버 자체 성능 조정
- 단일 인스턴스 리소스 증가
고려해야 할 요소
- 모니터링 지표 설정 → cpu, network, disk I/o
- 부하 예측 및 최대/최소 인스턴스 설정
- 스케일링 정책 선택
5. 쿠버네티스
쿠버네티스의 역할과 사용 이유에 대해 설명해주세요
쿠버네티스란?
- 컨테이너화된 애플리케이션을 자동으로 배포, 관리, 확장하는 컨테이너 오케스트레이션 플랫폼
주요 역할
- 컨테이너 오케스트레이션 : 여러개의 컨테이너를 자동으로 배포, 실행 모니터링
- Auto Scaling : 트래픽 변화에 따라 컨테이너 개수 자동 조절
- 서비스 디스커버리 & 로드밸런싱
- 장애 발생 시 컨테이너 자동 재시작 & 다른 컨테이너로 교체
- 무중단 배포 지원
사용 이유
- 기존 서버 운영 방식 → VM 기반으로 무겁고, 확장이 어려움 → 컨테이너 기반으로 가볍고 유연함
- 수동 배포, 업데이트 → 자동 배포, 롤백, 업데이트 지원
- 트래픽 증가 시 서버 직접 추가 → 오토 스케일링 지원
- 장애 발생 시 사람이 직접 조치 → 자동 복구 지원
도입해야 하는 경우
- 마이크로서비스 아키텍처를 사용중인 경우
- 컨테이너 기반 배포를 운영하는 경우
- 자동확장이 필요한 경우
- 무중단 배포를 적용하려는 경우