3 Tier Architecture

3티어 아키텍쳐란?

어플리케이션을 세 가지 논리적 및 물리적 컴퓨팅 계층으로 구분하는 아키텍처 클라이언트-서버 어플리케이션

  • 프레젠테이션 계층
  • 애플리케이션 계층
  • 데이터 계층

장점

  1. 기능의 논리적 및 물리적 분리
    1. 각 계층별로 별도의 팀에서 동시에 개발할 수 있다.
    2. 다른 계층에 영향을 주지 않고, 필요에 따라 업데이트 하거나 확장할 수 있다.
    3. 한 계층의 가동중단이 다른 계층의 가용성이나 성능에 영향을 미치지 않는다.
    4. 프레젠테이션 계층은

단점

  1. 1 계층으로만 사용하는 것에 비해 관리포인트가 늘어난다.
  2. 장애포인트 또한 늘어난다.
  3. 비용이 더 많이 발생한다.

프레젠테이션 계층

사용자와 상호작용 하는 계층 정보를 표시(Presentation)하고, 사용자의 입력을 받으며 애플리케이션 계층과 통신한다. 웹 프레젠테이션 계층은 대체로 HTML, CSS, JavaScript를 사용하여 개발된다. 데스크톱 애플리케이션은 플랫폼에 따라 다양한 언어로 작성될 수 있다.

애플리케이션 계층

프레젠테이션 계층에서 수집된 정보를 비즈니스 로직에 따라 처리하는 계층 비즈니스로직을 처리하고 데이터 계층의 데이터를 CRUD할 수도 있다. 애플리케이션 계층은 일반적으로 Python, Java, Perl, PHP 또는 Ruby를 사용하여 개발되며, API 호출을 사용하여 데이터 계층과 통신한다.

데이터 계층

데이터베이스 계층, 데이터 액세스 계층이라고도 불리며 애플리케이션이 처리하는 정보가 저장되고 관리되는 계층이다. 데이터베이스는 크게 RDBMS와 NoSQL로 나뉜다.

레이어와 계층의 차이

레이어 > 소프트웨어의 기능적 분할 계층 > 다른 분할과 구분된 인프라에서 실행되는 소프트웨어의 기능적 분할

추가학습 – 캐시

Memcached – 애플리케이션 계층 (메모리), Redis – (메모리) DB 데이터 계층 CloudFront 캐시 기능 = Browser캐시랑은 다른 개념

커맨드

MySQL 접속확인

Bastion에서 mysql 설치 sudo yum -y install mysql mysql -h database-2.cvpecc3r3cva.ap-east-1.rds.amazonaws.com -u admin -p

create user ‘testuser’@’localhost’ identified by ‘tupassword’; grant all privileges on mysql.* to ‘mysql’@’localhost’; flush privileges;

프로세스 종료

killall python3 ps -ef | grep python

WEB 서버

sh web.sh
sudo yum -y install git
git clone https://github.com/chlyoo/3tier-flask-mysql.git
cd 3tier-flask-mysql
pip3 install -r requirements.txt
export TARGET_HOST=http://internal-3tier-INT-ALB.ap-east-1.elb.amazonaws.com
nohup python3 web.py &
exit

sh hweb.sh
sudo yum -y install git
git clone https://github.com/chlyoo/3tier-flask-mysql.git
cd 3tier-flask-mysql
pip3 install -r requirements.txt
export TARGET_HOST=http://internal-3tier-INT-ALB.ap-east-1.elb.amazonaws.com
nohup python3 web.py &
exit

WAS 서버

sh was.sh
sudo yum -y install git
git clone https://github.com/chlyoo/3tier-flask-mysql.git
cd 3tier-flask-mysql
pip3 install -r requirements.txt
export MYSQL_PW=password
export MYSQL_HOST=database-2.ap-east-1.rds.amazonaws.com
nohup python3 was.py &
exit

sh hwas.sh
sudo yum -y install git
git clone https://github.com/chlyoo/3tier-flask-mysql.git
cd 3tier-flask-mysql
pip3 install -r requirements.txt
export MYSQL_PW=password
export MYSQL_HOST=database-2.ap-east-1.rds.amazonaws.com
nohup python3 was.py &
exit