애자일과 솔루션 개발이 주목을 받으면서 확장성이 좋고 오래 지속될 수 있는 아키텍처 설계가 요구되고 있다. 좋은 아키텍처가 소프트웨어 효율성을 높일 수 있다는 것은 누구나 아는 사실이지만 아키텍처 설계 과정이 너무 복잡해 쉽게 접근하지 못했던 것이 사실이다.
아키텍처 설계는 사용자 요구사항을 직접 듣고 시스템 구조로 정의하는 것이지만 최근에는 만들고자 하는 시스템뿐만 아니라 외부 시스템과 연계할 수 있는 클라우드나 프레임워크를 반영한 아키텍처 설계가 많아지는 추세다. 사용자 중심으로 방향이 변하고 있는 최근의 개발 트렌드처럼 기술보다는 비즈니스와 사용자 중심으로 아키텍처를 설계하고 있다.
시스템 구축을 위해 밑그림으로 정의하는 아키텍처의 역할은 분명 변하지 않는다. 다만, 아키텍처 본연의 역할을 하면서 최신 개발 트렌드를 반영한 아키텍처가 필요한 시점이기 때문에 이에 대한 준비와 적응이 필요하다.
이번 공학트렌드에서는 아키텍처의 종류와 역할에 대해 정리해보고, 최신 개발 트렌드를 반영한 아키텍처 설계를 위해 클라우드 적용 예를 살펴보기로 한다. 내부는 더 견고하고 외부에는 더 유연한 아키텍처를 설계하는데 좋은 가이드가 될 것으로 기대한다.
아키텍처의 종류와 역할
프로젝트에서는 아키텍처에 대한 논의가 많이 이루어진다. 아키텍처에 대한 정의는 다양한 의미와 용도로 사용되지만 “시스템 구축을 위한 시스템 전체 구조를 정의하고, 시스템을 구성하는 컴포넌트와 데이터 간 관계를 정의한다” 라는 것이 일반적으로 얘기되는 아키텍처의 정의이다.
초창기 아키텍처는 당장 필요한 시스템의 구조만 나타냈지만 현재는 다양하게 변하는 비즈니스 환경에 따라 유연하게 대처할 수 있는 장기적 관점의 아키텍처가 요구되는 추세다.
아키텍처 설계는 비즈니스 요구사항과 전략을 하나의 그림으로 나타내는 것으로, 사용자와 의사소통을 위한 가장 중요한 작업이다. 외부의 소프트웨어 , 시스템과 연계하는 경우가 많아지는 요즘은 아키텍처 설계의 중요성이 더 강조되고 있다.
아키텍처의 종류
아키텍처 설계를 보면, 사람이나 경우에 따라 다양한 형태로 그려진다. 아키텍처는 성격에 따라 비즈니스 아키텍처 (Business Architecture), 시스템 아키텍처 (System Architecture), 소프트웨어 아키텍처 (Software Architecture), 테크니컬 아키텍처 (Technical Architecture), 데이터 아키텍처 (Data Architecture) 등으로 나눌 수 있다 (< 그림 1> 참조 ). 이 외에도 비즈니스 아키텍처, 어플리케이션 아키텍처, 기술 아키텍처, 데이터 아키텍처 등 4 개 관점으로 정의하는 엔터프라이즈 아키텍처 (Enterprise Architecture) 가 있다.