개발일기/CS(면접)

아키텍쳐 종류 그리고 특징

w.llama 2025. 2. 24. 10:27

아키텍처 란?

아키텍처(Architecture)는 시스템을 설계하고 구성하는 구조를 의미하며, 목적과 용도에 따라 다양한 유형이 존재한다. 이번 글에서는 다양한 아키텍처 유형 중 서비스 아키텍처시스템 아키텍처에 대해 다루고자 한다.

 

서비스 아키텍처를 설계할 때는 서비스 간의 관계, API 호출 흐름, 데이터 흐름 등을 중심으로 다이어그램을 그리는 것이 일반적이다. 예를 들어 마이크로서비스 아키텍처라면, 각 서비스 간의 통신 방식과 데이터 저장소를 포함한 구조도를 작성한다.

반면, 시스템 아키텍처를 설계할 때는 전체 시스템의 인프라 구성, 네트워크 토폴로지, 서버 배치 등을 중심으로 다이어그램을 작성한다. 예를 들어 분산 시스템 아키텍처라면, 각 서버의 역할과 로드 밸런싱, 데이터 저장소 분포 등을 나타내는 구조도를 포함해야 한다. 

 

다음은 각각의 아키텍처에대해 종류와 특성을 적어두었다.

서비스 아키텍처

서비스 아키텍처는 애플리케이션이나 소프트웨어 서비스가 어떻게 구성되고 상호 작용하는지를 정의하는 아키텍처이다.

  1. 모놀리식 아키텍처 (Monolithic Architecture)
    • 하나의 애플리케이션이 단일 코드베이스로 구성됨
    • 배포와 관리가 비교적 간단하지만, 규모가 커질수록 유지보수가 어려워짐
    • 예: 전통적인 웹 애플리케이션
  2. 마이크로서비스 아키텍처 (Microservices Architecture)
    • 애플리케이션을 여러 개의 독립적인 서비스로 분리하여 구성
    • 각 서비스가 독립적으로 배포 및 확장 가능
    • 개발 및 유지보수는 용이하지만, 서비스 간 통신 비용이 증가할 수 있음
    • 예: Netflix, Amazon
  3. 서버리스 아키텍처 (Serverless Architecture)
    • 서버 관리를 개발자가 직접 하지 않고 클라우드에서 자동으로 처리
    • 이벤트 기반으로 동작하며 필요할 때만 리소스를 사용하여 비용 절감 가능
    • 짧은 실행 시간이 필요한 서비스에 적합
    • 예: AWS Lambda, Google Cloud Functions

시스템 아키텍처

시스템 아키텍처는 하드웨어와 소프트웨어가 어떻게 구성되고 연결되는지를 정의하는 아키텍처이다.

  1. 계층형 아키텍처 (Layered Architecture)
    • 애플리케이션을 여러 계층(Layer)으로 나누어 구성
    • 대표적으로 3계층(프레젠테이션, 비즈니스 로직, 데이터) 구조가 많이 사용됨
    • 유지보수가 용이하지만, 성능 저하가 발생할 수 있음
  2. 클라이언트-서버 아키텍처 (Client-Server Architecture)
    • 클라이언트와 서버가 명확히 분리된 구조
    • 서버가 클라이언트의 요청을 처리하고 응답을 반환하는 방식
    • 확장성과 보안성을 고려한 설계가 필요
  3. 이벤트 기반 아키텍처 (Event-Driven Architecture)
    • 시스템이 이벤트를 기반으로 동작하며, 비동기 방식으로 처리
    • 높은 확장성을 가지며, 실시간 처리가 중요한 시스템에서 유용함
    • 예: 금융 거래 시스템, IoT 시스템
  4. 분산 아키텍처 (Distributed Architecture)
    • 여러 개의 노드가 네트워크를 통해 통신하며 하나의 시스템처럼 동작
    • 고가용성과 확장성이 뛰어나지만, 네트워크 오버헤드 및 데이터 일관성 관리가 필요
    • 예: 블록체인, 대규모 클러스터 시스템

결론

아키텍처는 시스템의 성능, 확장성, 유지보수성 등에 영향을 미치는 중요한 요소이다. 프로젝트의 특성에 맞는 아키텍처를 선택하는 것이 중요하며, 최신 트렌드와 요구사항을 고려하여 적절한 설계를 진행해야 한다.