Skip to content

1.5 아키텍처 설계의 과거와 현재 #1470

@jongfeel

Description

@jongfeel

1.5 아키텍처 설계의 과거와 현재

1.5.1 2000년대의 시대적 배경과 아키텍처 설계 트렌드

당시에는 기업의 업무 시스템이 메인프레임에서 오픈형 시스템으로의 전환되는 흐름이 있었습니다.
또한 인터넷의 폭발적 보급과 스마트폰의 등장으로 이커머스 사이트를 비롯해 일반 소비자 대상의 웹사이트가 새로운 판매 채널로 자리잡으며 중요한 역할을 하게 되었습니다.

웹 애플리케이션과 SOA의 확산

이러한 과정에서 Struts나 Ruby On Rails와 같은 웹 애플리케이션 프레임워크가 등장하여 큰 인기를 끌었습니다.

애플리케이션 아키텍처도 이를 반영하여 ‘UI 계층-비즈니스 로직 계층-데 이터베이스 계층’으로 구성된 3계층 아키텍처가 널리 적용되었습니다.

애플리케이션 통합 관점에서 기존 애플리케이션의 기능을 서비스 단위로 분리하고 이를 다양한 시스템에서 다시 사용할 수 있도록 구성하는 것을 목표로한 SOAservice oriented architecture(서비스 지향 아키텍처)라는 설계 사상이 등장했습니다.
특히 SOA를 기반으로 한 애플리케이션 통합 플랫폼으로서 ESB enterprise service
bus 라는 미들웨어 middleware 제품이 대기업을 중심으로 도입되었습니다.

Java를 활용한 엔터프라이즈 애플리케이션 개발에서는 Java EE가, SOA 서비스를 구현하는 프로토콜로는 SOAP simple object access protocol (단순 객체 접근 프로토콜) 가 표준으로 자리잡았습니다.

이러한 배경 속에서 Spring Framework와 같은 경량 컨테이너 애플리케이션 프레임워크가 등장했습니다.

1.5.2 2020년대의 시대적 배경과 아키텍처 설계 트렌드

2020년대에는 B2C (일반 소비자 대상)와 B2B (기업 대상)에서 매력적인 서비스를 얼마나 신속하게 제공할 수 있는지가 중요한 과제로 부상했습니다.
이에 따라 기업 내부에서는 백오피스 업무 시스템과 경영 가시화 도구 등 다양한 소프트웨 어가 등장했으며, 이들 간에 긴밀한 연결이 이루어졌습니다.

클라우드의 등장과 확산

새로운 시스템을 도입할 때 클라우드 퍼스트 cloud first 라는 사고방식이 정착되어 이를 우선적으로 검토하는 경우가 많습니다.

애플리케이션 설계에서도 클라우드 환경 배포와 클라우드 서비스 업체가 제공하는 다양한 기능 활용을 기본 전제로 삼고 있으며, 이에 최적화된 아키텍처를 채택 해야 한다는 클라우드 네이티브cloud native 의 개념이 중요해지고 있습니다.

REST API의 보급

REST REpresentational State Transfer 는 HTTP 구조를 활용해 애플리케이션 간 데이터 통신을 간결하게 구현할 수 있도록 한 설계 원칙입니다.

마이크로서비스

마이크로서비스 아키텍처 microservice architecture 는 여러 개의 독립적인 소규모 서비스를 조합하여 하나의 애플리케이션을 구성하는 설계 방식입니다.

각 서비스 단위로 독립적인 개발과 배포가 가능하며, 필요한 경우 서비스 단위로 스케일링 scaling을 수행할 수 있습니다.

마이크로서비 스는 소프트웨어의 어질리티를 크게 향상시킬 수 있는 아키텍처로, 변화에 유연 하게 대응해야 하는 현대의 개발 환경에서 충분히 검토할 만한 가치가 있습니다.

다양성

프로그래밍 언어에는
Java, C# object-oriented programming,
Haskell이, Clojure functionnal programming,
Erlang과 같은 행위자 모델 기반 언어 등
각각 고유한 특성을 지니고 있습니다.

데이터베이스 분야에서도
column-oriented database,
document-oriented database,
graph database 등
다양한 NoSQL 데이터베이스를 용도에 따라 선택할 수 있게 되었습니다.

프런트엔드 개발에서도 변화가 있었습니다.
최근에는 React와 Vue.js 같은 JavaScript 라이브러리를 활용한 SPA single page application 아키텍처가 주요 방식으로 자리 잡았으며,
React와 Vue.js에 기반한 Next.js나 Nuxt같은 프런트엔드 프레임워크도 널리 사용되고 있습니다.

Metadata

Metadata

Assignees

Projects

Status

Done

Relationships

None yet

Development

No branches or pull requests

Issue actions