꼭 알아야 할 시스템 설계 용어 50가지

시스템 설계 면접은 지원자가 확장 가능하고 효율적인 시스템을 만들 수 있는지를 검증하는 데 있어 항상 중요한 요소입니다. 주요 용어에 대한 지식은 면접에서 좋은 점수를 받는 데 도움이 될 것입니다. 아래는 반드시 알아야 할 시스템 설계 면접 용어 50가지에 대한 정의와 실제 예시시를 학습을 위한 추가 자료와 함께 설명합니다.

1. Scalability

  • 정의: 리소스를 추가하여 증가하는 부하를 지원할 수 있는 시스템의 능력입니다.
  • 예시: 웹 트래픽 증가를 처리하기 위해 서버를 더 추가합니다.
  • What is Scalability and How to Achieve it?

2. Load Balancer(로드 밸런서)

  • 정의: 들어오는 네트워크 트래픽을 여러 서버로 분할하여 한 서버에서 많은 양의 부하를 처리하지 않도록 합니다.
  • 예시: AWS Elastic Load Balancer(ELB) 서비스를 사용하여 여러 EC2 인스턴스 간에 웹 트래픽 부하를 분산합니다.
  • 로드 밸런서 이해

3. Microservice(마이크로서비스)

  • 정의: 느슨하게 결합된 서비스들의 모음으로 애플리케이션을 구조화하는 아키텍처 패턴입니다.
  • 예시: 모놀리식(monolithic) 애플리케이션을 사용자 관리, 결제 처리, 알림 전송을 담당하는 독립적인 서비스로 세분화합니다.
  • 마이크로서비스란 무엇인가요?

4. CAP Theorem(CAP 정리)

  • 정의: 분산 시스템에서는 일관성, 가용성, 분할 허용성이라는 세 가지 보장 중 최대 두 가지만 얻을 수 있다는 것을 의미합니다.
  • 예시: 분산 데이터베이스 설계에서 가용성을 위해 일관성을 희생해야 하는 경우(또는 그 반대의 경우)
  • CAP 정리 이해하기

5. Sharding(샤딩)

  • 정의: 더 나은 관리를 위해 대규모 데이터베이스를 샤드라고 하는 작은 조각으로 나누는 것을 말합니다.
  • 예시: 지리적 지역을 기반으로 사용자 데이터베이스를 샤딩합니다.
  • 데이터베이스 샤딩 설명

6. Latency

  • 정의: 데이터가 A 지점에서 B 지점까지 이동하는 데 걸리는 시간으로 정의됩니다.
  • 예시: 채팅 애플리케이션을 통한 메시지 전달과 관련된 지연 시간 측정.
  • 지연 시간에 대해 설명!

7. Throughput(쓰루풋)

  • 정의: 시스템이 일정 시간 내에 처리하는 데이터의 양을 측정한 것 입니다. 처리율, 처리량라고도 불립니다.
  • 예시: 웹 서버가 1초 동안 처리하는 요청 수입니다.
  • 컴퓨터 네트워크에서의 처리량(Throughput)

8. 캐시(Cache)

  • 정의: 동일한 데이터를 반복 요청할 필요가 없도록 데이터를 저장하고 빠르게 제공하는 하드웨어 또는 소프트웨어 구성 요소
  • 예시: 반복적인 데이터베이스 쿼리를 위해 Redis 캐싱을 구현하는 것
  • 캐싱 설명

9. Content Delivery Network(CDN)

  • 정의: 지리적으로 분산된 서버 시스템으로, 사용자가 액세스하는 지리적 위치에 따라 웹 콘텐츠를 사용자에게 표시합니다.
  • 예시: 더 빠른 웹 페이지 로딩을 위해 Cloudflare CDN 사용.
  • CDN이란 무엇인가요?

10. REST API

  • 정의: HTTP 요청을 사용하여 데이터에 액세스하고 조작하는 웹 서비스를 구축하도록 설계된 아키텍처 스타일의 한 유형입니다.
  • 예시: REST(Representational State Transfer) 원칙에 따른 소셜 미디어 API 설계.
  • REST API 튜토리얼

11. GraphQL

  • 정의: 데이터를 쿼리하도록 설계된 언어이므로 REST보다 훨씬 더 강력하고 효율적이며 유연합니다.
  • 예시: GraphQL을 사용하여 단일 요청으로 사용자 정보 쿼리.
  • GraphQL 소개

12. ACID

  • 정의: 데이터베이스 트랜잭션의 안정적인 처리를 보장하는 속성 집합입니다. 속성은 원자성, 일관성, 고립성 및 내구성입니다.
  • 예시: 은행 거래에 ACID 속성이 있는지 확인하면 데이터 손상을 방지할 수 있습니다.
  • 데이터베이스의 ACID 속성

13. BASE

  • 정의: ACID의 대안으로, 엄격한 일관성(Consistency)보다 가용성(Availability)과 파티션 허용성(Partition tolerance)을 강조하는 시스템. 기본적으로 가용하며(Basically Available), 변화하는 상태를 허용하고(Soft state), 결국에는 일관성을 이루는(Eventually consistent) 시스템.
  • 예시: 높은 가용성과 최종 일관성을 제공하는 NoSQL 데이터베이스의 설계.
  • BASE vs ACID

14. NoSQL

  • 정의: 관계형 데이터베이스에서 사용되는 표 형식의 관계가 아닌 다른 방식으로 모델링된 데이터의 저장 및 검색을 촉진하도록 설계된 데이터베이스 유형입니다.
  • 예시: 문서 기반 데이터 저장소에 MongoDB 사용.
  • NoSQL 데이터베이스란 무엇인가요?

15. SQL

  • 정의: 관계형 데이터베이스에서 데이터를 저장, 조작 및 검색하는 데 사용되는 표준 언어입니다.
  • 예시: 관계형 데이터베이스에서 데이터를 가져오기 위해 SQL 쿼리를 작성합니다.
  • SQL 튜토리얼

16. 데이터베이스 인덱싱

  • 정의: 데이터베이스에서 데이터를 빠르게 검색하고 액세스할 수 있도록 하는 데이터 구조 기법입니다.
  • 예시: 검색 속도 향상을 위해 사용자 ID 열에 인덱싱을 생성합니다.
  • 데이터베이스 인덱싱

17. Replication

  • 정의: 분산 데이터베이스 시스템을 구성하는 여러 데이터베이스에서 데이터베이스 객체를 복사하고 유지 관리하는 프로세스입니다.
  • 예시: 복제를 사용하여 다양한 지리적 위치에서 데이터베이스의 고가용성을 유지.
  • 데이터베이스 복제(Database Replication)

18. Failover(장애 조치)

  • 정의: 주요 시스템 구성 요소가 손실되었을 때, 다른 시스템 구성 요소가 그 기능을 대신하는 백업 운영 모드.
  • 예시: 인터넷 애플리케이션 서버가 장애가 발생할 경우, 대기 서버로 자동으로 전환되는 내장된 자동 장애 조치 기능.
  • 장애 조치(Failover)와 재해 복구(Disaster Recovery) 비교

19. API Gateway

  • 정의: API의 앞단에 위치하여 API 요청을 수신하고 제한 및 보안 정책을 적용한 다음 백엔드 서비스로 전달하는 서버입니다.
  • 예시: AWS API 게이트웨이를 사용하여 API 관리.
  • API 게이트웨이란?

20. Service Mesh

  • 정의: 마이크로서비스 간의 서비스 간 통신을 원활하게 하기 위한 전용 인프라 계층.
  • 예시: 마이크로서비스 상호 작용 관리를 위한 서비스 메시로 Istio 통합.
  • Service Mesh 소개

21. Serverless Computing

  • 정의: 클라우드 공급자가 동적으로 컴퓨팅 자원을 할당하는 클라우드 컴퓨팅 구현 방식.
  • 예시: AWS Lambda를 사용하여 서버 설정 없이 백엔드 코드를 실행
  • 서버리스 컴퓨팅이란 무엇인가요?

22. Event-Driven Architecture

  • 정의: 일반적으로 이벤트를 생성, 감지, 소비하고 이에 반응하도록 장려하는 소프트웨어 아키텍처 패러다임.
  • 예시: Apache Kafka를 사용하여 마이크로서비스 간의 이벤트 통신으로 시스템을 설계하기.
  • 이벤트 기반 아키텍처(Event-Driven Architecture)

23. Monolithic Architecture

24. 분산 시스템

  • 정의: 네트워크로 연결된 컴퓨터에 위치한 구성 요소들이 메시지를 주고받으며 서로의 동작을 조정하는 모델.
  • 예시: Hadoop과 같은 분산 파일 시스템 설계.
  • 분산 시스템 소개

25. 메시지 큐(Message Queue)

  • 정의: 아키텍처에서 비동기 서비스 간 통신을 가능하게 하는 방법.
  • 예시: RabbitMQ를 사용하여 서비스 간 메시지를 큐에 저장.
  • 메시지 큐 설명

26. Pub/Sub 모델

  • 정의: 발신자(게시자)가 메시지를 발행하고, 수신자(구독자)가 목적지를 알 필요 없이 메시지를 수신하는 메시징 패턴.
  • 예시: Google Cloud Pub/Sub를 사용하는 알림 시스템.
  • Pub/Sub 메시징

27. 데이터 파티셔닝(Data Partitioning)

  • 정의: 데이터베이스를 더 작고 관리하기 쉬운 부분으로 분할 하는 것.
  • 예시: 데이터베이스의 테이블을 날짜별로 분할하여 쿼리를 매우 빠르게 실행할 수 있습니다.
  • 데이터베이스 파티셔닝

28. Horizontal Scaling

  • 정의: 시스템 내에 더 많은 머신이나 노드를 추가하여 용량을 증가시키는 것.
  • 예시: 사용자 트래픽이 증가할 때 웹 서버를 추가로 설치.
  • Horizontal vs Vertical Scaling

29. Vertical Scaling

  • 정의: 기존 머신의 CPU나 RAM 같은 성능을 업그레이드하는 것.
  • 예시: 서버의 RAM을 업그레이드하여 더 많은 요청을 처리할 수 있게 함.
  • Horizontal vs Vertical Scaling

30. 속도 제한(Rate Limiting)

  • 정의: 네트워크 인터페이스 컨트롤러가 보내거나 받는 트래픽의 속도를 제어하는 것.
  • 예시: API의 남용을 방지하기 위해 API를 제한.
  • 속도 제한 이해하기

31. Circuit Breaker 패턴

  • 정의: 최신 소프트웨어 개발에 사용되는 디자인 패턴으로, 장애를 감지하고 장애가 지속적으로 반복되는 것을 방지하는 로직을 캡슐화 함.
  • 예시: 마이크로서비스 아키텍처에서 서킷 브레이커를 사용하여 원격 서비스 호출 실패 처리.
  • Circuit Breaker 패턴

32. 데이터 일관성(Data Consistency)

  • 정의: 여러 인스턴스 간에 데이터가 동일하고 손상되지 않도록 보장하는 것.
  • 예시: 데이터베이스의 여러 복제본을 통해 사용자 데이터의 일관성을 유지.
  • 데이터 일관성 모델

33. 궁극적 일관성(Eventual Consistency)

  • 정의: 높은 가용성을 목표로 하는 분산 컴퓨팅에서 사용되는 일관성 모델로, 시스템의 업데이트가 시간이 지나면 모든 노드에 반영될 것을 보장함.
  • 예시: Amazon DynamoDB는 읽기 작업에 대해 최종 일관성 모델을 제공함.
  • 궁극적 일관성

34. 강력한 일관성(Strong Consistency)

  • 정의: 모든 읽기 작업이 가장 최근의 쓰기 작업을 반영하도록 보장하는 일관성 모델.
  • 예시: 금융 거래 시스템에서 강력한 일관성 사용.
  • 강력한 일관성

35. 컨테이너화(Containerization)

  • 정의: 기본적으로 애플리케이션과 그 종속성을 컨테이너에 캡슐화하여 다양한 컴퓨팅 환경에서 실행할 수 있도록 하는 것.
  • 예시: Docker를 사용하여 애플리케이션을 개발, 테스트, 프로덕션 환경에 배포할 수 있도록 컨테이너화.
  • 컨테이너화란 무엇인가요?

36. 쿠버네티스(Kubernetes)

  • 정의: 애플리케이션 컨테이너의 배포, 확장 및 운영 프로세스를 자동화하는 오픈소스 플랫폼.
  • 예시: Kubernetes를 사용하여 컨테이너화된 애플리케이션 실행 및 배포.
  • Kubernetes 문서

37. 오토스케일링(Autoscaling)

  • 정의: 사용자 부하에 따라 컴퓨팅 리소스 수를 자동으로 조정하는 것.
  • 예시: AWS EC2 오토스케일링 기능을 사용하여 인스턴스 수를 동적으로 조정.
  • 오토스케일링 설명

38. Multi-Tenancy

  • 정의: 단일 소프트웨어 애플리케이션 인스턴스가 여러 소비자/고객에게 서비스를 제공하는 아키텍처.
  • 예시: Salesforce와 같은 SaaS 애플리케이션이 다양한 고객 그룹에게 Multi-Tenancy를 사용하여 서비스 제공.
  • Single Tenancy Vs Multi-Tenancy?

39. 로드 셰딩(Load Shedding)

  • 정의: 높은 부하 상태에서 시스템 전체의 건강을 유지하기 위해 일부 요청을 처리하지 않거나 서비스를 저하시키는 것.
  • 예시: 트래픽이 폭주하는 시간대에 필수적이지 않은 모든 서비스를 종료.
  • Load Shedding

40. 멱등성(Idempotence)

  • 정의: 수학 및 컴퓨터 과학에서 특정 연산을 여러 번 수행해도 결과가 동일한 특성.
  • 예시: HTTP DELETE 요청은 멱등성을 가짐.
  • API의 멱등성

41. Quorum

  • 정의: 분산 트랜잭션을 커밋하기 위해 필요한 최소 투표 수.
  • 예시: 분산 데이터베이스에서 일관성을 보장하기 위해 쿼럼 기반 복제를 사용.
  • Quorum Systems

42. 오케스트레이션(Orchestration)

  • 정의: 서비스 간 상호작용을 중앙에서 조정자가 제어하는 패턴.
  • 예시: 다단계 비즈니스 프로세스를 관리하기 위해 워크플로 엔진을 사용.
  • 오케스트레이션

43. Choreography

  • 정의: 각 서비스가 독립적으로 이벤트를 통해 다른 서비스와 상호작용하며, 중앙 조정자 없이 작동하는 서비스 상호작용 패턴.
  • 예시: 이벤트 버스를 통해 마이크로서비스가 상호작용하는 Choreography 패턴.
  • Choreography vs. Orchestration

44. 서비스 레지스트리

45. API 속도 제한

  • 정의: 특정 시간 내에 클라이언트가 API에 요청할 수 있는 횟수를 제어하는 것.
  • 예시: API 남용을 방지하기 위해 분당 100개의 요청으로 제한.
  • API 속도 제한

46. 데이터 웨어하우스(Data Warehouse)

  • 정의: 보고서 생성 및 비즈니스 데이터 분석을 돕는 시스템; 비즈니스 인텔리전스의 허브.
  • 예시: 데이터 웨어하우징에 Amazon Redshift를 도입.
  • 데이터 웨어하우스 이해하기

47. 데이터 레이크(Data Lake)

  • 정의: 데이터를 네이티브/원시 형식으로 저장하는 시스템 또는 저장소, 일반적으로 객체 블롭이나 파일 형태로 저장.
  • 예시: 데이터 레이크에서 구조적 및 비구조적 데이터를 페타바이트 규모로 저장 및 관리.
  • 데이터 레이크

48. OLAP(Online Analytical Processing)

  • 정의: 데이터베이스에 저장된 데이터를 분석할 수 있는 소프트웨어 카테고리.
  • 예시: 정교한 분석 및 임의의 쿼리를 위해 OLAP 큐브 사용.
  • OLAP 설명

49. OLTP(Online Transaction Processing)

  • 정의: 트랜잭션 중심 애플리케이션을 관리하는 시스템.
  • 예시: 은행 시스템과 같은 트랜잭션 데이터 관리를 위한 OLTP 시스템 사용.
  • OLTP 설명

50. 빅 데이터

  • 정의: 기존 데이터 처리 소프트웨어로는 효율적으로 관리할 수 없는 크고 복잡한 데이터 세트.
  • 예시: 패션 트렌드를 예측하기 위해 소셜 미디어 상호작용 분석.
  • 빅데이터 소개

마무리

계속 학습하고, 시스템 설계에서 이러한 개념들을 실제로 적용해보는 것이 중요합니다. 프로젝트에 이러한 개념들을 적용하고, 관련된 논의에 참여하면서 배워가세요. 이러한 리소스와 논의는 개념의 용어와 사용 사례에 익숙해지는 데 도움을 줄 것입니다.

Share