Anyway

[1] 3Tier 구축 본문

3Tier/1차 PrivateProject

[1] 3Tier 구축

dyana 2024. 10. 2. 10:50

내부적으로 부담없이 참여할 수 있는 프로젝트가 생겨 진행하면서 기록하게 되었다. 🤭

 

3Tier Architecture

3Tier Architecture는 소프트웨어 시스템을 3개의 독립적인 계층으로 나누어 설계하는 방식이다. 

이 구조는 전통적인 클라이언트-서버 모델에서 더 확장된 형태로 각 계층이 독립적으로 동작할 수 있도록 설계하여 유지보수와 확장성을 높인 아키텍처이다.

> 즉 장점으로 본다면 각 계층이 독립적으로 동작하기 때문에 수정 또는 업데이트를 할 때 다른 계층에 영향을 주지 않고 변경할 수 있으며 오류 또는 버그가 났을 때도 어느 계층에서 문제가 발생했는지 쉽게 파악이 가능하다는 점이다. 

> 반대로 단점을 본다면 계층이 나누어져 있기에 구현 및 관리가 복잡해질 수 있으며 작은 프로젝트에서는 3Tier Architecture가 오히려 과도할 수 있다. 배보다 배꼽이 더 큰 격이 될 수도 있다는 점..! 🧐

  • Presentation tier : 사용자와 직접 소통하는 티어로 주로 HTML/CSS와 같은 유저를 위한 UI로 구성
  • Application tier : 실제 로직을 처리하는 티어로 다양한 프로그래밍 언어등으로 구성
  • Data tier : 데이터를 저장하는 티어로 주로 데이터베이스 혹은 데이터를 처리하는 저장 공간으로 구성

3Tier Architecture  요구사항

이번 1차 3Tier Architecture 구성에 있어서 필수 요구사항은 이러했다.

  1. Git을 통한 버전 관리
  2. 구성도 이미지
  3. DB - 원하는 방식의 데이터 사용
  4. WEB/WAS/DB 구축 

서버를 여러 대 준비해야 하고 나중에는 이중화도 생각해야 했기에 쉽고 빠르게 구축할 수 있는 aws를 떠올렸지만 계속 띄워놓고 이것 저것 해 볼 생각을 하니 비용을 생각하지 않을 수 없었다.. 🥲 aws 너모 비싼 걸.. 이전 프로젝트 때 파트너사로부터 aws private CA에 대한 테스트를 요청받아 진행했던 마음 아픈 경험이 있는데 .. 그것은 비하인드로 따로 포스팅하겠다 !! 

 

그래서 선택한 방법은 Ansible이다. Ansible은 작년에 살짝 경험해본 적이 있어 선택하게 되었다. Ansible Tower와 함께 썻었는데 그 때보다야 지금은 터미널 환경이 훨씬 익숙해졌기에 괜찮겠다 싶었다. 유용하고 편리하기에 계속 쓰고 싶은 기술이기도 하고 또다시 써봐야 까먹지 않을 거기에 선택하게 됐다. 그리고 Ansible yaml을 통해 git을 통한 버전 관리도 되니 Good~

 


3Tier Architecture  - Server

3Tier Architecture 구성을 위해 구성한 서버는 이렇다. 

[Infra]

IP OS Server
77.88.140.11 Ubuntu Ansible Server
77.88.140.23 Ubuntu nginx_web1
77.88.140.24 Ubuntu nginx_web2
77.88.140.25 Ubuntu tomcat_was1
77.88.140.26 Ubuntu tomcat_was2
77.88.140.27 Ubuntu mysql_db1
77.88.140.28 Ubuntu mysql_db1

 

이중화를 위해 각각 2개씩 구성해놓았으며 main Ansible 컨트롤 서버는 77.88.140.11이다. 

 


3Tier Architecture  -  구성도

클라이언트로부터 요청이 들어오면 web서버로 들어가기 전 HAProxy를 거치고 web서버에 진입하게 되면 application server로 넘어갈 수 있게 구성해놓았다. web과 was, db 구성이 모두 구성되어 있다는 게 보이는 게 요구사항이었으므로. db는 postgres로 구축하여 application server를 통해 리스트 데이터를 뿌려 볼 수 있게 해놓았다. 

 


 

이제 차례대로 Ansible로 web은 어떻게 구축하며 was, db 또한도 어떤 과정으로 구축했는지에 대해 포스팅하고자 한다. 

Ansible server를 통해 web과 was, db 서버를 다루기 위해선 선행 과정이 필요한데 이 부분은 미리 포스팅해놓았다.

2024.08.23 - [Ansible] - [Ansible] Ansible Install & SSH 연결(원격 접속)

 

[Ansible] Ansible Install & SSH 연결(원격 접속)

상황 : Private Project를 진행하며 코드 작업 히스토리를 남기며 반복 작업도 줄이고 싶어 Ansible을 사용하게 됐다.[Infra]77.88.140.11UbuntuAnsible Server77.88.140.23Ubuntunginx_web177.88.140.24Ubuntunginx_web277.88.140.25Ubu

dyana.tistory.com

 

원격 접속이 가능해야 Ansible 메인 server에서 통제 관리가 가능하다! 원격 접속까지 준비가 다 되었다면 web부터 차례대로 구성해보겠다! 다음 포스팅에서 계속 -! 

 

 

참고 git : https://github.com/sbdyana/Ansible-3Tier