3 Tier Layer 와 IDC

3티어 레이어는 개발에서도 자주 사용되는 용어로 개발자에게도 많이 익숙한 용어 입니다. 이러한 3티어 레이어라는 것이 실제로 인프라에서는 어떻게 접목이 되고 있는지 알아보도록 하겠습니다. 

 

3티어 레이어

3티어 레이어는 말그대로 레이어를 3계층으로 나누어 관리를 하는 방식을 의미 합니다.

여기서 의미 하는 각 레이어에 대한 설명은 아래와 같습니다. 

 

#Web Layer 는 기본적으로 정적 페이지를 제공해주는 서버를 의미합니다. 현 시대에서는 이러한 정적과 동적에 대한 의미가 많이 퇴색이 되고 있는 현황에 있고 이를 두고도 많은 아키텍처가 생겼기도 합니다. 

#Service Layer 흔히 알고 있는 Application Server들이 존재하는 곳 들로 여러 API를 제공함으로써 여러 GUI에서 해당 기능을 보여주거나 사용하도록 하고 있습니다. 

#Repository Layer는 IDC (Internet Data Center) 를 의미하며 해당 부분에서는 데이터베이스와 관련된 서버 들이 배치하게 됩니다. 

 

WebServer vs WebApplicationServer

웹서버와 웹 어플리케이션 서버는 다른 용도의 의미로 사용이 되고 있는데 각 서버의 기능이 어떻게 되는지 보면서 좀 더 심도 깊은 이해를 해보도록 하겠습니다. 

 

웹 서버의 주요 기능
#정적 콘텐츠 전달 : 웹 서버는 정적 콘텐츠, HTML 파일, CSS, JavaScript 및 이미지를 빠르고 효율적으로 제공합니다.
#HTTP 요청 처리 : GET, POST, PUT, DELETE 등 다양한 HTTP 메서드를 이해하여 들어오는 HTTP 요청과 응답을 처리합니다.
#SSL/TLS 관리: 웹 서버는 SSL/TLS를 사용하여 서버와 클라이언트 간에 전송되는 데이터를 암호화하여 보안 연결을 처리합니다.
#부하 분산 : 일부 웹 서버는 단일 서버에 과부하가 걸리는 것을 방지하기 위해 들어오는 트래픽을 여러 서버에 분산시킵니다.
#캐싱 : 웹 서버는 정적 콘텐츠를 캐싱하여 서버 부하를 줄이고 사용자의 응답 시간을 단축할 수 있습니다.

 

애플리케이션 서버의 주요 기능
#코드 로딩 및 관리 : 애플리케이션의 코드와 종속성을 메모리에 초기화하여 효율적으로 요청을 처리할 수 있도록 준비합니다.
#상태 유지 : 서버는 애플리케이션을 메모리에 보관하여 요청 간 상태를 유지 관리하고 세션 관리 및 인증을 가능하게 합니다.
#요청 처리 : 애플리케이션 로직을 실행하고, 데이터베이스와 상호작용하며, 동적 응답을 생성하여 웹 서버의 동적 요청을 처리합니다.
#동시성 관리 : 여러 동시 요청을 처리하도록 설계된 애플리케이션 서버는 여러 인스턴스나 스레드를 관리하여 여러 사용자에게 원활한 성능을 보장합니다.
#미들웨어 통합 : 인증, 로깅, API 관리와 같은 작업을 위한 미들웨어를 지원하여 애플리케이션에 도달하거나 웹 서버로 반환되기 전에 요청 및 응답 처리를 향상시킵니다.
#응답 생성 : 요청을 처리한 후 HTML 페이지나 JSON 데이터와 같은 적절한 응답을 생성하여 웹 서버로 다시 전송합니다.
#오류 처리 및 로깅 : 요청 처리 중에 발생하는 오류를 관리하고 로깅하여 개발자에게 애플리케이션의 안정성과 신뢰성을 보장합니다 

 

요즘은 Service Layer 를 Web Application Server 로 구현을 많이 하고 있으며 개발 시에는 프레임워크를 통해 개발을 하여 효율적인 개발을 중시하고 있습니다. 특히나, 프론트엔드에서는 프레임워크의 발전으로 3계층을 하나의 서버에서 구성이 가능하도록 해주고 있고 이러한 모습을 보았을 때, 3계층 레이어는 내부 서버 아키텍처를 구분하기 위한 용어로 사용되어 지게 됩니다. 

 

IDC (Internet Data Center)

IDC는 흔히 알고 있는 데이터베이스를 의미를 하고 있으면서 파일서버를 의미하고 있습니다. 이러한 공통적 의미를 사용함으로써 개발자들의 용어를 일원화를 하고 있고, IDC를 통해 빅데이터 분석과 관련된 업무를 수행할 수 있습니다. 

그렇 다면 IDC에서는 어떤 종류의 데이터베이스가 존재하는지 알아 보도록 하겠습니다. 

 

#SQL DB는 흔히 알고 있는 RDBMS를 말하며 이러한 디비는 정형화된 데이터를 제공하고 최적화 시키는데에 목적을 두고 사용합니다. 이러한 RDB를 사용하게 되면 형식이 미리 짜져 있기 때문에 일관화 된 데이터를 수집하는데 유리하고 이후에 데이터를 가공하는데도 효율적이라는 이점을 가지고 있습니다. 단점으로는 이미 구조화된 데이터이기 때문에 변경하거나 확장하는데 있어서 다른 에러가 발생하기 좋습니다. 

 

#NoSQL DB는 SQL DB와 달리 비정형화된 데이터를 저장하는데 사용하는 데이터베이스로 비슷한 기능에서 제공하는 JSON형식의 데이터를 하나의 문서에 저장할 수 있다는 장점이 있습니다. 이러한 장점은 프로그래밍을 유연하게 사용할 수 있고 우리가 원하는 서비스를 다양하게 만들 수 있다는 장점을 가집니다. 단점으로는 비정형 데이터 이기에 데이터 가공시 버그가 발생하기 쉽다는 것입니다. 

'Infra > Architecture' 카테고리의 다른 글

왜 컨테이너 인가? VM vs Container  (0) 2024.10.16
IT Infra의 기초  (7) 2024.10.09