오늘 친구와 밥을 먹으며 이야기를 하다 '아키텍처'가 뭔지 아는지 질문을 해 왔다.
그때 나는 당연히 컴퓨터 부품(cpu, 하드디스크 등)을 이야기 하는줄 알았는데
친구가 "개발자가 아키텍처를 몰라? 3계층 몰라?" 라고 묻길래,나는 "7layer? tcp/ip 7계층? 말하는거냐?"라고 답했다.
내가 말한 '아키텍처'가 컴퓨터 HW구조는 맞다. 하지만 친구가 질문한 '아키텍처'는 '애플리케이션 아키텍처'이다.
이 게시물에서는 '3계층 아키텍처'를 그냥 '아키텍처'라 칭하겠다.
한 애플리케이션을 3개의 논리적/물리적 컴퓨팅 계층으로 나누어 구현 및 운영하는 것이다. 예를 들면 하나의 웹 사이트를 서비스 할 때
데이터베이스, 웹 서버, 클라이언트(프레젠테이션)로 3개로 나누는 기준과 같다.
계층뿐 아니라 계층이 이루어진 구조마다 특징이 있다.
구조는 1계층 구조, 2계층 구조, 3계층 구조로 구분할 수있다.
1계층 구조는 하나의 컴퓨터 또는 서버에서 3가지 계층 기능을 구현한 방식이다. 컴퓨터가 바뀌는 경우 모든 구성을 변경해야하는 번거로움이 있다.
2계층 구조는 쉽게 생각하면 front-end와 back-end를 나누는 것이라고 생각하면 된다. 프레젠테이션 계층은 어플리케이션 계층과 데이터 계층이 분리되어 구성하기 때문에 데이터베이스가 변경되거나 프레젠테이션이 변경되더라도 영향을 받지 않는다.
3계층 구조는 각각의 계층이 구분되는 것이다. 모든 계층이 물리적으로 분리되어 있기 때문에 한 계층이 변경되더라도 다른 계층에 영향이 가지 않는다.