Amazon Web Services

AWS 3-Tier Architecture 실전 사례 - 1

junoshon 2024. 10. 24. 23:23

안녕하세요. 

저는 AWS 3-Tier Architecuture를 실전 사례를 들어 구축해보려고 합니다. 

이번 글에서는 3-Tier Architecture 란 무엇인지 알아보겠습니다.

 

3-Tier Architecture

흔히 3계층 구조라고도 부르는 3-Tier Architecture는 상황에 따라 의미가 조금 다릅니다.

OSI 7 Layer 의 상위 계층(L5~L7)의 관점으로 보느냐, 하위 계층(L1~L4)의 관점으로 보느냐에 따라 지칭하는 바가 다릅니다.

그럼, 각 계층은 어떻게 3-Tier 아키텍쳐를 나타낼까요?

 

하위 계층(L1~L4) 

OSI 7 Layer 중 하위 계층

전송 계층, 네트워크 계층, 데이터링크 계층, 물리 계층을 통틀어 부르는 하위 계층에서 말하는 3-Tier 주로 데이터센터의 네트워크 구조를 일컫습니다. L2와 L3에서 트래픽을 전달하기 위해 사용되는 장비인 스위치와 라우터가 어떻게 연결되어 있는지를 나타내는 그림입니다.

 

 

3-Tier Architecture(Network)

 

이 경우 인터넷 백본망과 연결되는 제일 상단의 Core 계층이 있고, 그 아래 해당 트래픽들은 분배하는 Distribution 계층이 있습니다(Aggregation 계층 이라고도 합니다.). 그리고 그 아래 말단 노드들이 연결되는 Access 계층이 있습니다.

 

이처럼 IDC에서 네트워크 트래픽을 3 계층으로 나누어 얻는 이점은 여러가지가 있지만, 가장 큰 이유는 고가용성(High Availablity)의 확보입니다. 라우터 한대에 장애가 나도 비상용으로 대기하고 있던 라우터가 트래픽을 중개할 수 있게 하지요. 

Core, Distribute, Access 로 나뉘는 3-Tier 아키텍처는 전통적인 아키텍처로, 대부분의 컴퓨터 네트워크가 이와 같은 아키텍처를 차용하고 있습니다.

 

하지만 기술이 발전함에 따라 더 빠르고, 대역폭을 효율적으로 사용하길 원하는 경우가 생겨났습니다. 따라서 아래와 같은 2-Tier Architecture 가 생겨나게 됩니다.

 

2-Tier Architecture(Spine-Leaf Architecture)

스파인-리프 아키텍쳐라고도 부르는 2-Tier 아키텍처는 3개의 계층으로 설계된 3-Tier와 달리 중추 역할을 하는 Spine 장비와 그에 연결되는 Leaf 장비, 총 2개의 계층으로 설계되었습니다. 잠깐 3-Tier 아키텍처의 그림을 보고 오겠습니다.

 

네트워크 트래픽 흐름

위 그림을 참고해주세요. 1번 PC에서 2번 PC로 트래픽을 보내기 위해서는 화살표와 같이 트래픽이 흘러야 합니다.

Distribution 계층을 거치는 것 만으로는 2번 PC에 도달할 수 없기 때문에 Core 계층을 거쳐야 하지요. 

이처럼 트래픽이 많은 경로를 거쳐 전달되어야 하고, 호스트마다 네트워크의 품질이 많이 다를 수 있습니다. 

다시 2-Tier Architecture 의 그림으로 돌아오겠습니다.

 

2-Tier Architecture(Spine-Leaf Architecture)

하지만 2-Tier 아키텍쳐는 어느 Leaf 노드에서든지 다른 Leaf 노드까지 통신하기 위한 통신의 횟수가 같습니다. 위 그림의 경우 Spine 스위치에 한 번만 도달하면 네트워크 상의 어느 Leaf 노드에나 2번의 포워딩으로 도달할 수 있습니다. 

이와 같은 2-Tier 아키텍처는 최근들어 IDC에서 많이 사용되고 있습니다. AI의 학습, 트래픽의 부하 분산, 빅데이터 분석 등 IDC 내부에서 전달되는 트래픽이 많아야 하는 경우에 적합한 아키텍처입니다.

 

인프라 혹은 네트워크 쪽에서 3-Tier 라 하면 이런 내용들을 얘기합니다.

다음은 상위 계층에 대해서 알아보겠습니다.

 

상위 계층(L5~L7) 

OSI 7 Layer 중 상위 계층

TCP/IP 모델에서는 Application 계층이라고 묶어 부르는 상위 계층에서는 3-Tier 아키텍처라고 하면 흔히 응용프로그램의 관점으로 접근합니다.

즉, 소프트웨어를 얘기합니다. 웹에서는 흔히 프론트엔드라고 부르는 Web Server, 백엔드라고 부르는 Web Application Server, 데이터베이스라고 부르는 Database 등입니다.

 

3-Tier Architeecture(Applicatioin)

상위 계층의 3-Tier 아키텍처는 위와 같이 표현됩니다.

 

Presentation Tier

대표적인 웹 서버

사용자가 직접 마주할 UI 콘텐츠를 서빙할 Web server(Apache HTTP Server, Nginx) 가 동작하는 계층을 표현 계층이라 합니다. 개발 방식에 따라 브라우저에 나타날 컨텐츠를 미리 Web server에서 렌더링 한 후 전달하는 Server Side Rendering(SSR) 방식으로 구현할 수도 있고, 반대로 Web server는 HTML 파일과 JS 파일만을 전달하고 렌더링을 클라이언트의 브라우저에서 수행하는 Client Side Rendering(CSR) 방식으로도 구현할 수 있습니다.

 

Logic Tier

대표적인 웹 애플리케이션 서버

비즈니스 로직을 수행하는 계층입니다. Web server로부터 받는 요청에 응답을 하며, 필요하다면 Data 계층으로부터 데이터를 질의해 Web server가 요청한 데이터를 반환합니다. 

이런 역할을 하는 서버를 Web Application Server, 줄여서 WAS 라 하며 웹 백엔드 개발자들은 Spring, Nest.js, Django 등의 프레임워크를 사용해 WAS 서버를 개발합니다. 개발한  서버 애플리케이션은 Apache Tomcat 등의 WAS 위에서 실행됩니다.

 

Data Tier

대표적인 데이터베이스

데이터를 보관하는 계층입니다. 매우 민감하며, 이 계층을 위해 네트워크 망분리를 하기도 합니다.

WAS 가 데이터를 질의하면 데이터베이스에서 검색해 요청받은 데이터를 반환합니다.

 

 

마치며

계층 아키텍처의 주요 장점은 각 계층이 자체 인프라에서 실행되기 때문에 각 계층이 별도의 개발 팀에 의해 동시에 개발될 수 있으며 다른 계층에 영향을 주지 않고 필요에 따라 업데이트되거나 확장될 수 있다는 점입니다.

 

이번 글에서는 OSI 7 계층에서 하위 계층과 상위 계층이 바라보는 3-Tier 아키텍처와 그 차이를 알아보았습니다.

다음 글에서는 실전 사례를 통한 AWS 3-Tier 아키텍처에 대해 작성해 보겠습니다.

 

질문과 지적은 댓글로 부탁드립니다.

긴 글 읽어주셔서 감사합니다.