시스템 설계 및 아키텍처
웹 애플리케이션 맥락에서 수평 확장 (horizontal scaling) 과 수직 확장 (vertical scaling) 의 차이점을 설명하세요.
답변:
수평 확장은 리소스 풀에 더 많은 머신 (예: 더 많은 서버) 을 추가하여 부하를 분산하는 것을 의미합니다. 수직 확장은 단일 머신의 리소스 (CPU, RAM) 를 늘리는 것을 의미합니다. 일반적으로 수평 확장이 더 유연하고 복원력이 뛰어납니다.
CDN(콘텐츠 전송 네트워크) 이란 무엇이며 웹 성능에 왜 중요한가요?
답변:
CDN 은 지리적으로 분산된 프록시 서버 및 데이터 센터 네트워크입니다. 정적 콘텐츠 (이미지, CSS, JS) 를 최종 사용자에게 더 가깝게 캐싱하여 웹 성능을 향상시키고, 지연 시간을 줄이며, 원본 서버의 부하를 감소시킵니다. 이를 통해 콘텐츠 전송 속도를 높이고 사용자 경험을 향상시킵니다.
분산 시스템에서 로드 밸런서 (load balancer) 의 목적을 설명하세요.
답변:
로드 밸런서는 단일 서버에 과부하가 걸리지 않도록 여러 서버에 걸쳐 들어오는 네트워크 트래픽을 분산합니다. 상태 확인 (health checks) 및 트래픽 리디렉션을 통해 병목 현상을 방지하고 장애 허용 (fault tolerance) 을 제공함으로써 애플리케이션의 가용성, 확장성 및 안정성을 향상시킵니다.
관계형 (SQL) 데이터베이스 대신 NoSQL 데이터베이스를 선택하는 경우는 언제인가요?
답변:
대량의 비정형 또는 반정형 데이터를 처리하거나, 높은 확장성 및 유연성이 필요하거나, 빠른 개발 주기가 필요한 경우 NoSQL 을 선택합니다. SQL 데이터베이스는 복잡한 트랜잭션, 강력한 데이터 일관성 및 잘 정의된 스키마에 더 적합합니다.
마이크로서비스 (microservices) 란 무엇이며, 장점과 단점은 무엇인가요?
답변:
마이크로서비스는 애플리케이션을 작고 독립적인 서비스들의 모음으로 구축하는 소프트웨어 아키텍처 스타일입니다. 장점으로는 독립적인 배포, 확장성, 기술 다양성이 있습니다. 단점으로는 운영 복잡성 증가, 분산 데이터 관리, 서비스 간 통신 오버헤드 등이 있습니다.
분산 시스템에서의 최종 일관성 (eventual consistency) 을 설명하세요.
답변:
최종 일관성은 특정 데이터 항목에 더 이상 업데이트가 발생하지 않으면, 해당 항목에 대한 모든 읽기 작업이 결국 마지막 업데이트된 값을 반환하는 일관성 모델입니다. 이는 즉각적인 일관성보다 가용성 및 파티션 허용 (partition tolerance) 을 우선시하며, NoSQL 데이터베이스에서 흔히 볼 수 있습니다.
캐싱 (caching) 이란 무엇이며, 일반적인 캐싱 전략은 무엇인가요?
답변:
캐싱은 기본 소스에서 데이터를 검색하는 시간을 줄이기 위해 자주 액세스되는 데이터를 더 빠르고 임시적인 저장 계층에 저장하는 것입니다. 일반적인 전략으로는 '쓰기 스루'(write-through, 캐시와 데이터베이스에 동시에 쓰기), '쓰기 백'(write-back, 캐시에 쓰고 비동기적으로 데이터베이스에 쓰기), '캐시 어사이드'(cache-aside, 애플리케이션이 캐시 읽기/쓰기 관리) 등이 있습니다.
수평 확장된 애플리케이션에서 세션 관리를 어떻게 처리하나요?
답변:
수평 확장된 애플리케이션에서 세션 관리는 모든 서버 인스턴스가 세션 데이터에 액세스할 수 있도록 Redis 또는 Memcached 와 같은 공유 외부 저장소가 필요합니다. 스티키 세션 (sticky sessions, 로드 밸런서가 항상 사용자 요청을 동일한 서버로 라우팅) 을 사용할 수도 있지만 유연성이 떨어집니다.
시스템 설계에서 메시지 큐 (예: RabbitMQ, Kafka) 의 역할은 무엇인가요?
답변:
메시지 큐는 분산 시스템의 여러 부분 간의 비동기 통신을 촉진합니다. 서비스를 분리하고, 피크 시간 동안 요청을 버퍼링하며, 안정적인 메시지 전달을 보장하여 시스템의 복원력, 확장성 및 응답성을 향상시킵니다.
API 설계에서 멱등성 (idempotency) 개념을 설명하세요.
답변:
멱등성 작업은 한 번 실행하든 여러 번 실행하든 동일한 결과를 생성하는 작업입니다. 예를 들어, DELETE 요청은 리소스를 한 번 제거해야 하며, 이후 동일한 DELETE 요청은 시스템 상태를 더 이상 변경하지 않아야 합니다. 이는 안정적인 분산 시스템에 매우 중요합니다.
CAP 이론이란 무엇이며, 데이터베이스 선택에 어떤 영향을 미치나요?
답변:
CAP 이론은 분산 데이터 저장소가 일관성 (Consistency), 가용성 (Availability), 파티션 허용 (Partition tolerance) 세 가지 속성 중 두 가지만 보장할 수 있다고 말합니다. 관계형 데이터베이스는 일반적으로 일관성과 가용성 (CA) 을 우선시하는 반면, NoSQL 데이터베이스는 종종 가용성과 파티션 허용 (AP) 또는 일관성과 파티션 허용 (CP) 을 우선시합니다.