시스템 아키텍처에 대해 설명해보세요.

  • 시스템 아키텍처

시스템 아키텍처는 시스템이 어떻게 작동하는지를 설명하는 프레임워크이다. 시스템 목적을 달성하기 위해 시스템의 각 컴포넌트가 무엇이며 어떻게 상호작용하는지, 정보가 어떻게 교환되는지를 설명한다.

시스템 아키텍처에 대한 정의는 다양한데, 종합하면 다음과 같은 기본 요구 사항이 있다.

- 시스템 구성 및 동작 원리를 나타내고 있다.

- 시스템 구성 요소(부품)에 대해 설계 및 구현을 지원하는 수준으로 자세히 기술된다. (IEEE 1471 또는 TOGAF 등)

- 구성 요소 간의 관계 및 시스템 외부 환경과의 관계가 묘사된다.

- 요구 사양 및 시스템의 전체 수명주기를 고려한다.

- 시스템 전체(하드웨어와 소프트웨어를 포괄한 것)에 대한 논리적인 기능 체계와 그것을 실현하기 위한 구성 방식. 시스템의 전체적인 최적화를 목표로 하고 있다.

  • 시스템 아키텍처 설계

시스템 아키텍처의 설계 원칙이 정해졌으면, 비즈니스의 요구 사항을 이 설계 원칙에 따라서 설계한다. 시스템 아키텍처는 크게 아래와 같이 3가지로 나뉘어 정의된다.

- 애플리케이션 아키텍처(Application Architecture): 개발해야 하는 애플리케이션 소프트웨어에 대한 아키텍처를 설계한다. 컴포넌트의 정의, 컴포넌트 간의 관계, 특정 기능에 대한 컴포넌트 간의 호출 흐름, 그리고 컴포넌트 간의 통신을 위한 메시지에 대한 규격 정의를 포함한다.

- 테크니컬 아키텍처(Technical Architecture): 애플리케이션의 배포 구조를 정의한다. 애플리케이션을 배포할 하드웨어의 구조와, 애플리케이션 개발에 사용하는 미들웨어(DBMS, 웹서버 등)의 배포 구조를 함께 정의한다.-

- 데이터 아키텍처(Data Architecture): 애플리케이션에서 다루는 정보(데이터)의 구조와 관계를 정의한다.

최근 대규모 서비스 환경에서는 기존 모놀리식(Monolithic) 구조에서 마이크로서비스 아키텍처(MSA, Microservices Architecture)로의 전환이 빠르게 이루어지고 있다. MSA는 단일 애플리케이션을 독립적으로 배포 가능한 소규모 서비스의 집합으로 구성하는 방식으로, 삼성SDS·LG CNS·카카오 등 국내 대형 IT 서비스 기업들이 주요 플랫폼에 적극 도입하고 있다. 또한 쿠버네티스(Kubernetes) 기반의 클라우드 네이티브 아키텍처가 확산되면서 서비스의 탄력적 확장과 무중단 배포가 아키텍처 설계의 핵심 요소로 부상하고 있다.

▲ 아키텍처 설계 프로세스

운영체제

커널에 대해 설명해보세요.

시스템설계

스프링 프레임워크의 특징에 관해 설명해보세요.

커뮤니티 Q&A

이론과 관련된 게시글이에요.

이해가 안 되거나 궁금한 점이 있다면 커뮤니티에 질문해 보세요!

게시글 작성하기