반응형
SMALL

13. Web 서버


  • 앞서 생성했던 Bastion Host를 통해 Private Subnet에 ssh로 접속해 Web 서버를 설치해주도록 하자.
  • Web 서버를 설치한 뒤에는 EX-ELB를 통해 로드밸런스 테스트까지 해준다.
  • 다음 작업은 Web1과 Web2 모두 동일하게 진행해주도록 하자.

13-1 Private Web 서버 접속

  • Private의 접속하기 위해서는 ".pem" 키 파일을 이용한 ssh로 접속해 주도록 하자

13-2 sudo yum -y install httpd 명령어를 통해서 Web서버인 아파치를 설치해주자

13-3 설치가 되었으면 다음과 같은 명령어를 입력해주자.

sudo systemctl start httpd    // httpd 실행

sudo systemctl enable httpd     // 재부팅 되어도 실행 지속

sudo systemctl status httpd         // httpd 상태 확인

13-4. 다음과 같은 디렉터리로 이동해준 뒤, 로그를 통해 패킷을 확인해보자

cd /etc/httpd/conf
cd /var/log/httpd
tail -f access_log

13-5. Web 서버 확인을 위해 Html파일로 테스트 페이지를 작성해주자.

  • /var/www/html 디렉터리로 이동해준뒤 <파일명>.html 으로 테스트 페이지를 작성해준다.

(Web2서버에서는 테스트 페이지 작성할 때, 로드밸런스 확인할 수 있게 Web1과는 다른 내용으로 작성해주자. )

  • 테스트 페이지 작성 후, systemctl restart httpd 명령어로 아파치를 재실행 해주자.
  • 테스트 페이지를 작성해도 현재 Web서버는 Private 이라서 확인해 볼 수가 없다.
  • 확인하기 위해서는 외부 로드밸런서를 이용해 보도록 하자.

13-6. 앞에서 생성했던 EX-ELB를 통해 Web서버가 제대로 동작하는지 확인해준다.

  • EX-ELB의 DNS name을 통해 접속 가능하다. 주소창에 입력해보자.

13-7. EX-ELB 하나의 주소로 새로고침 할 때마다, 웹페이지가 다르게 보여지는걸 확인할 수 있다.

  • 웹서버와 로드밸런서가 제대로 동작중인 것을 확인해주자.

 

14. 웹 애플리케이션 서버 (WAS) 설치


  • 앞서 생성했던 Bastion Host를 통해 Private Subnet에 ssh로 접속해  WAS 를 설치해주도록 하자.
  • WAS를 설치한 뒤에는 IN-ELB를 통해 로드밸런스 테스트까지 해준다.
  • 다음 작업은 WAS1과 WAS2 모두 동일하게 진행해주도록 하자.

14-1. Private WAS 서버 접속

  • Private의 접속하기 위해서는 ".pem" 키 파일을 이용한 ssh로 접속해 주도록 하자

14-2. WAS 서버인 Tomcat을 설치해주기 전에는 Java가 필요하다.

  • Java가 설치 되어있는지 확인해주자.

14-3. 자바가 설치되어 있지 않아서 설치해주도록 한다.

  • yum 명령어를 통해 설치해주도록 하자.
  • sudo yum install -y java-1.8.0-openjdk.x86_64

14-4. Java가 설치가 되었다면 다음으로 WAS 서버에 Tomcat을 설치해주자

  • Tomcat 홈페이지에서 사용하려는 Tomcat의 버전의 링크를 가져와 wget을 통해 설치해주자

tomcat.apache.org/download-10.cgi

 

Apache Tomcat® - Apache Tomcat 10 Software Downloads

Welcome to the Apache Tomcat® 10.x software download page. This page provides download links for obtaining the latest version of Tomcat 10.0.x software, as well as links to the archives of older releases. Unsure which version you need? Specification versi

tomcat.apache.org

14-5. Tomcat이 설치되어 있는것을 확인해주고

  • sudo tar xzf apache-tomcat-10.0.20.tar.gz 명령어를 통해 압축을 풀어주도록 하자.

14-6. 압축 해제된 Tomcat의 폴더로 이동한 후, sudo ./bin/startup.sh 명령어를 통해 톰캣을 실행 시켜주자.

14-7. 설치했던 tomcat의 디렉터리 안에  logs 디렉터리로 이동해주고,

  • tail -f localhost_access_log.2021-02-21.txt  가장 최근의 로그파일이 생성되어있다.
  • 로그를 확인해보자

14-8. WAS 서버 확인을 위해 JSP 파일로 테스트 페이지를 작성해주자.

  • /Tomcat/webapps/ROOT 디렉터리로 이동해준뒤 <파일명>.jsp 으로 테스트 페이지를 작성해준다.
  • (WAS2 서버에서는 테스트 페이지 작성할 때, 로드밸런스 확인할 수 있게 WAS1과는 다른 내용으로 작성해주자. )

14-9. ./shutdown.sh 명령어로 Tomcat을 종료했다가, 다시 시작해주자

14-10. WAS 서버가 타겟으로 등록된 IN-ELB의 상태가 healthy인지 확인해주자.

14-11.Web 서버와 WAS 서버를 연결해주는 작업이 별도로 필요하다. Apache 설치 시 같이 설치되는 mod_proxy 모듈을 이용해서 두 서버를 연결해주도록 하자.

  • WAS 서버가 설치되었고 로드밸런서도 작동중이지만,
  • 현재는 Web과 WAS가 연결되어 있지 않은 상태이기 때문에, EX-ELB를 타고 들어왔던 트래픽이 Web에서 WAS로 전달 불가능하다.
  • cd /etc/httpd/conf/httpd.conf 파일을 열어서
  • Include conf.modules.d/*.conf 구문 밑에 다음과 같이 추가해주자.

LoadModule proxy_connect_module modules/mod_proxy_connext.so

LoadModule proxy_module modules/mod_proxy.so

LoadModule proxy_http_module modules/mod_proxy_http.so

14-12. 그 후, 파일 맨 끝에 다음과 같은 구문을 작성해주자.

  • Web에서 받은 트래픽을 IN-ELB:8080으로 넘겨주는 작업

14-13. 파일 내용이 적용 될 수 있도록 Apache를 재실행 해주자

14-14. Web과 WAS가 제대로 연결되었다면, EX-ELB의 DNS Name/<파일명>.jsp 를 통해 접속하면 다음과 같이 로드밸런서가 작동되는 WAS 서버 테스트 페이지를 확인할 수 있다.

  • 새로고침 할 때마다 WAS1, WAS2 가 계속 바뀌는 것과 현재 시간 데이터를 받아올 수 있다.

 

15. WAS와 DB 연동


  • WAS와 DB를 연결하려면 WEB과 연결할 때 처럼 별도의 연결모듈이 필요하다.

mvnrepository.com/artifact/mysql/mysql-connector-java/8.0.23

  • 위의 링크에서 mysql-connector-java/8.0.23.jar 파일을 다운받아 주었다.

15-1. /tomcat/lib 디렉터리에 mysql-connector-java.8.0.23.jar 파일을 넣어주도록 하자

15-2. DB 연동 확인을 위해 JSP 파일로 새로 테스트 페이지를 작성해주자.

  • /Tomcat/webapps/ROOT 디렉터리로 이동해준뒤 <파일명>.jsp 으로 테스트 페이지를 작성해준다
  • String Url="jdbc:mysql://DB의 Endpoint/DB명";
  • String Id="DB사용자명";
  • String Pass="패스워드";

 

15-3. 위의 모든 준비를 마쳤으면, EX-ELB의 DNS Name/<파일명>.jsp 를 통해 DB와 연동된 jsp 테스트 페이지를 확인해보자

15-4. RDS DB 인스턴스는 Multi AZ를 사용해서 Active - Stand by 형태로 이중화 구성을 해준다.

  • 평소에는 ap-northeast-2a 영역을 Master DB로 사용하다가 장애 발생 시, 대기 상태였던 ap-northeast-2c 가 자동으로 Master로 승격되어 작업을 계속 수행하도록 한다.
  • Multi AZ는 동기식으로 복제되기 때문에, 데이터를 유지한 채 지속적인 작업을 수행할 수 있다.
반응형
LIST

'Clould > Amazon Web Service' 카테고리의 다른 글

[AWS] 3-Teir Architecture 실습 #3  (0) 2022.07.28
[AWS] 3-Teir Architecture 실습 #2  (0) 2022.07.27
[AWS] 3-Teir Architecture 실습 #1  (0) 2022.07.27
[AWS] 3-Teir Architecture 그리기  (0) 2022.07.27
[AWS] 3-Tier 란?  (0) 2022.07.27
반응형
SMALL

11. ELB 생성 (ALB)


11-1. External ELB 생성 (ALB)

💡 External ELB는 IGW로부터 들어온 트래픽들을 Web1, Web2로 분산해준다.

  • EX-ELB는 인터넷에 연결하고, HTTP 80번 포트를 이용해 연결 요청을 확인한다.

11-2. 각 가용영역의 Public 서브넷에 위치하도록 한다.

11-3. EX-ELB의 보안그룹은 HTTP 80번 포트에서 오는 모든 트래픽을 허용해 주도록 설정한 EX-ELB를 선택해주자.

11-4. ELB를 통해 들어온 트래픽들은 각각 web1, web2로 보내주도록 하자

11-5. ELB가 생성되었으면 타겟그룹에서 연결된 인스턴스들의 상태가 healthy인지 확인해주자.

11-6. Internal ELB 생성 (ALB)

 💡 IN-ELB는 web을 통해 들어온 트래픽들을 was1, was2로 분산해서 보내주는 역할을 한다.

  • EX-ELB 생성할 때와는 다르게 internal로 체크해주자.

11-7. IN-ELB는 WAS에 위치하도록 해주자

11-8.  IN-ELB는 web을 통과한 트래픽들만 허용해주자

11-9. IN-ELB는 8080를 타고 다음 타겟을 찾아가도록 해주자.

11-10. IN-ELB를 통해 들어온 트래픽은 각각 was1, was2로 보내주도록 하자

11-11. 생성된 IN-ELB의 대상 인스턴스의 상태가 healthy인지 확인해주자.

 

 

12. RDS 생성


 💡 3티어 아키텍처에서 데이터베이스 계층을 담당하는 부분이다.

 

  • RDS DB 인스턴스를 생성해 DB를 관리해주도록 하자

12-1. 서브넷 그룹 생성

  • RDS를 생성하기 전에 먼저 서브넷 그룹을 생성해주자.

12-2. RDS DB 인스턴스 생성

17. [AWS] RDS에 대해서 알아보자

12-3. AWS Console에서 RDS로 들어와서, 'Create database'를 눌러 DB 인스턴스를 생성해주자.

12-4. 직접 세부 설정해 줄 것이기 때문에 Standard Create 체크하고, DB 엔진으로는 사용하기 쉬운 MySQL를 선택해주자

12-5. MySQL의 버젼은 8.0.20 으로 선택해주었다. DB 인스턴스는 프리티어로 만들어 주도록 하자

12-6. DB 인스턴스의 이름을 정해주고, Master의 이름과 패스워드 설정을 해주자.

12-7. DB 인스턴스에 사용할 VPC와 서브넷 그룹을 선택해주자.

12-8. VPC 보안그룹과 가용영역을 설정해주고 MySQL의 포트인 3306을 지정해주자

12-9. 다른 설정들은 기본값으로 해준뒤 potato라는 이름의 DB 인스턴스를 생성해주었다.

  • 현재 상태가 Creating 이라서 Endpoint가 나타나지 않는다. 완전히 생성되려면 시간이 좀 걸리기 때문에 느긋하게 기다려주자.

12-10. 현재 상태가 Available로 변하면서 Endpoint 주소가 나타났다. 이후에 Endpoint 주소를 통해 DB에 접속하면 된다.

12-11. Security Group - 인바운드 규칙에서 MySQL의 포트를 허용해주자.

12-12. 생성했던 DB 인스턴스의 Endpoint 주소와 패스워드로 EC2에서 접속해 보았다.

12-13 RDS DB 인스턴스 구성

  • 다음과 같이 RDS DB인스턴스를 생성해 주도록 하자
DB Engine MySQL 8.0.20
DB 사이즈 t2.micro
DB 인스턴스 식별자 db
데이터베이스 이름 db
Master 이름 admin
passwd 생성 시 설정해둔 것 기억.
Mulil-AZ 사용
서브넷 그룹 위에 생성해준 db-subnet group

12-14 RDS 보안그룹

  • RDS의 보안그룹 설정은 다음과 같이 3306 포트를 열어주도록 하자
  • Source는 WAS를 바라보게끔 해서 WAS를 통해 들어온 트래픽만 접근할 수 있다.

반응형
LIST

'Clould > Amazon Web Service' 카테고리의 다른 글

[AWS] 3-Teir Architecture 실습 #4  (0) 2022.07.28
[AWS] 3-Teir Architecture 실습 #2  (0) 2022.07.27
[AWS] 3-Teir Architecture 실습 #1  (0) 2022.07.27
[AWS] 3-Teir Architecture 그리기  (0) 2022.07.27
[AWS] 3-Tier 란?  (0) 2022.07.27
반응형
SMALL

7. 라우팅 테이블 생성


  • 네트워크 통신이 이루어질 때, 데이터들은 라우터를 거쳐가게 된다. 라우터는 해당 데이터들의 경로를 지정해주는 역할을 하고, 경로들을 라우팅 테이블에 저장시킨다.
  • 데이터들은 라우팅 테이블의 저장되어 있는 경로를 따라 원하는 목적지를 찾아가게 된다.

 

7-1. 퍼블릭 서브넷용 라우팅 테이블을 생성하고 모든 트래픽은 인터넷 게이트를 통해 외부와 연결할 수 있게 한다.

7-2. 2개의 퍼블릭 서브넷과 연결시켜 퍼블릭 서브넷들의 경로를 지정해준다.

7-3. 마찬가지로, 프라이빗 서브넷들은 모든 트래픽은 NAT 게이트웨이로 향하는 경로를 지정해준다.

7-4. 6개의 프라이빗 서브넷과 연결시켜 프라이빗 서브넷들의 경로를 정해주자.

 

8. 보안그룹 생성


  • 보안그룹은 AWS 인스턴스에 접근하거나, 인스턴스가 접근하려고 하는 패킷을 포트번호로 제어하기 위한 설정이다.
  • 인바운드, 아웃바운드 규칙을 통해 어느 포트를 허용/차단할지를 정한다.
  • 인바운드 규칙 - 기본 규칙은 모든 트래픽에 대해서 차단한다. 허용해 줄 포트만 열어주는 Whitelist 방식
  • 아웃바운드 규칙 - 기본 규칙은 모든 트래픽에 대해서 허용한다. 차단해 줄 포트만 닫아주는 Blacklist 방식
  • 이 아키텍처에서는 다음과 같이 보안그룹을 생성해준다.
이름  타입  포트  대상
Bastion SSH 22 0.0.0.0/0
EX-ELB HTTP 80 0.0.0.0/0
WEB SSH,HTTP 22,80 Bastion, 0.0.0.0/0
IN-ELB HTTP 80 WEB
WAS SSH,HTTP 22,8080 Bastion, IN-ELB
DB MySQL 3306 WAS

Bastion - 22 - SSH - 모든 ip에서 접속 가능
EX-ELB - 80 - HTTP - 모든 ip에서 접속 가능
WEB - 80 - HTTP - 모든 ip에서 접속 가능
IN-ELB - 8080 - HTTP - WEB을 통과한 ip만 접속 가능
WAS - 8080 - HTTP - IN-ELB를 통과한 ip만 접속 가능
DB - 3306 - MySQL - WAS를 통과한 ip만 접속 가능
80 - Apache 포트번호
8080 - Tomcat 포트번호
22 - SSH 포트번호
3306 - MySQL 포트번호

 

9. EC2 인스턴스 생성


  • Private 서브넷에 WEB, WAS를 설치해줄 EC2 인스턴스를 생성해 주어야 한다.
  • 하지만 Private 서브넷에 위치한 EC2 인스턴스들은 외부에서 접근할 수가 없다. 그래서 Bastion Host를 통해서 ssh접속을 해서 외부접근이 가능하도록 해주자

💡 Bastion Host?

  • Bastion Host란 Private 환경에 접근하기 위해 Proxy 역할을 해주는 서버이다.
  • Private 서브넷에 위치한 EC2 인스턴스들은 외부에서 접근할 수가 없기 때문에, 관리자는 Bastion Host를 통해 SSH 접속을 할 수 있다.
  • Bastion Host를 통해서만 인스턴스로 접근할 수 있기 때문에, 보안성을 높일 수 있고, Bastion Host의 log만 관리하면 Private 서브넷에 접속하는 모든 기록을 관리할 수 있다.
  • 반대로, Bastion Host가 공격당하면 Private 네트워크가 모두 노출되므로, Bastion Host를 철저히 관리해주자. 

 

10. Bastion Host 생성


  • 만들어 두었던 VPC안에 Bastion Host를 생성해주자.
  • Bastion Host는 Public subnet에 위치하고 Public IP를 할당해 줌으로써, 외부에서 ssh를 통해 접근할 수 있도록 해주자.

10-1. Public Subnet에 위치하고, Elastic IP를 할당해주어 외부에서 ssh접근을 통해 접속할 수 있도록 Bastion Host를 생성해준다.

10-2. Bastion Host의 인바운드 규칙을 모든 트래픽에서 접근할 수 있도록 0.0.0.0/0 을 주었다.

(실제로 웹서버를 관리할 때는 관리자의 고유IP만 접근할 수 있도록 규칙을 만들어 보안성을 강화할 수 있다.)

10-3. 퍼블릭IP로 접속한 Bastion Host에서 Private 서브넷으로 접속해주자.

💡  SCP를 통하여 Bastion 안에 Key-pair를 전송하여 퍼블릭 서버 → 프라이빗 서버 통신 가능

반응형
LIST

'Clould > Amazon Web Service' 카테고리의 다른 글

[AWS] 3-Teir Architecture 실습 #4  (0) 2022.07.28
[AWS] 3-Teir Architecture 실습 #3  (0) 2022.07.28
[AWS] 3-Teir Architecture 실습 #1  (0) 2022.07.27
[AWS] 3-Teir Architecture 그리기  (0) 2022.07.27
[AWS] 3-Tier 란?  (0) 2022.07.27
반응형
SMALL

1. 3티어 아키텍처 (3 tier architecture)


  • 3티어 아키텍처는 어떤 플랫폼을 3개의 계층으로 물리적/논리적으로 나누어 운영하는 것을 뜻한다.
  • 웹 서버를 운영할 경우 1대의 서버에 전부 구축하지 않고 각각 웹 서버, WAS , DB로 3개로 나누어 운영한다.
  • 각각의 계층들은 서로 독립적이므로 서로간에 영향을 끼치지 않기 때문에 각 계층을 담당하는 인원을 나누어 업무 분담을 가능하게 해주거나, 1대의 서버에서 하던 작업을 3대로 나누었기에 서버의 부하를 줄여주는 장점을 가지고 있다.
  • 그리고 2개의 가용영역으로 나누어 하나의 인스턴스에서 작동이 중단되어도 다른 인스턴스에서 작동할 수 있게끔 해주자
  • 아래 그림은 AWS로 구축하는 3티어 아키텍처를 그려보았다.
  • 다음과 같은 아키텍처를 통해서 웹 서버를 구축하는 것이 목표이다.

 

2. 전체 구조 (Draw.io)


1. 실습 전 아키텍처

2. 실습 후 아키텍처

 

3. VPC 생성


  • VPC는 AWS에서 가상의 네트워크를 제공해주는 서비스이다. 사용자의 상황에 맞게 VPC를 생성하고 서브넷, 라우팅 테이블, 게이트웨이 등 네트워크 자원들을 가상으로 생성하고 사용할 수 있다. 먼저 VPC를 생성해 주도록 하자.

 

  • 다음과 같이 VPC를 생성해주자.
    VPC Name WOONG-VPC
    IPv4 CIDR 10.0.0.0/16

 

 

4. IGW 생성


  • IGW (인터넷 게이트웨이)는 VPC가 외부 인터넷과 연결할 수 있게 해주는 관문이다. IGW를 통해 VPC는 인터넷과 통신할 수 있게 된다.

 

5. 서브넷 생성


  • 서브넷은 하나의 네트워크가 분할되어 나눠진 작은 네트워크이다. IP주소를 효율적으로 사용하기 위해 적절한 단위로 네트워크를 분할하는 것이다.
  • 다음과 같이 서브넷을 생성해주자.
ap-nothest-2a ap-notheast-2b
PUB-1 10.0.0./24 PUB-2 10.10.0./24
WEB-1 10.0.1.0/24 WEB-2 10.0.11.0/24
WAS-1 10.0.2.0/24 WAS-2 10.0.12.0/24
DB-1 10.0.3.0/24 DB-2 10.0.13.0/24

 

 

6. NAT 게이트웨이 생성


  • NAT 게이트웨이는 프라이빗 서브넷에서 외부로 통신하기 위한 관문이다.
  • 프라이빗 서브넷이 외부와 통신하기 위해 NAT 게이트웨이에 EIP를 할당받아서 연결한다.

반응형
LIST

'Clould > Amazon Web Service' 카테고리의 다른 글

[AWS] 3-Teir Architecture 실습 #3  (0) 2022.07.28
[AWS] 3-Teir Architecture 실습 #2  (0) 2022.07.27
[AWS] 3-Teir Architecture 그리기  (0) 2022.07.27
[AWS] 3-Tier 란?  (0) 2022.07.27
AWS 클라우드 용어 #9 CDN, #10 Management  (0) 2022.07.27
반응형
SMALL

3-Tier 아키텍처를 그려보자!


  • 사용자들이 Domain Name을 통해 웹 사이트 접속을 한다는 가정을 잡고 구성해 봤습니다.
  • 정적 또는 동적 파일을 할당하고 처리해서 장애를 최소화한 무중단 아키텍처를 구성했습니다.

 

 

Route53

 

  • AWS 제공하는 DNS(Domain Name System), 사용자들도메인 네임을 통해 접속
  • DNS는 이를 IP 주소변환시켜 컴퓨터가 적절한 서버접속 할 수 있게 도와줌

 

WAF(Web Application Firewall)

  • 웹 애플리케이션 보안특화되어 개발된 솔루션입니다.
  • 웹 애플리케이션에 대한 3티어 구조이기 때문에 WAF를 둠으로써
  • 직,간접적인 웹 공격에 대응하도록 구성

 

CloudFront

  • 글로벌 콘텐츠 전송 네트워크(CDN) 서비스입니다.
  • 이는 사용자에게 가장 가까운 엣지 서버를 찾아서 빠르게 정적, 동적 콘텐츠제공
  • 이후 같은 요청에 대해서는 캐시 기능사용하여서 사용자에게 더 빠른 응답을 함
  • 데이터 엑세스 비용추가적으로 들지 않는다

 

S3 (Simple Storge Service)

  • 객체 스토리지 서비스입니다.
  • 사진이나 동영상과 같은 정적 콘텐츠저장하고 있는 오리진 서버로서 구성을 하였습니다.
  • 뛰어난 확장성 및 비용 측면에서도 절감이 될 것이라 생각했습니다.

 

NAT GateWay (Network Address Translation)

  • 네트워크 주소 변환 서비스 입니다.
  • 보안을 강화시키기 위하여 서버들을 Private Subnet으로 구성했기 때문에
  • 외부와의 통신Public IP 절약을 위해서 구성했습니다.
  • 서버들은 NAT를 통해서 외부에서 패키지를 다운 받을 수 있게 됩니다.

 

ALB (Application Load Balancer)

  • 7계층에서 작동하는 로드밸런서이며 호스트경로 기반 라우팅지원합니다.
  • HTTP/HTTPS라는 프로토콜을 통해 외부에서 접속을 하기 때문에
  • 목적에 맞게 External LB7계층 로드 밸런서를 사용했습니다

 

NLB (Network Load Balancer)

  • 4계층에서 동작하는 로드밸런서이며 UDP/TCP 연결을 지원합니다.
  • 보다 암호화 되어 있고 빠른 부하 분산을 위해Internal에는 4계층 로드 밸런서사용

 

Web Server

 

  • 사용자에게 보여지는 역할을 하는 서버로서, 정적 콘텐츠처리합니다.
  • 웹 사이트에 접속했을 때 가장 먼저 보여지는 역할을 하고
  • HTTP 통신을 통하여 사용자와 가장 가깝게 접하게 되는 서버입니다.

 

App Server

  • 동적 콘텐츠를 관리하는 서버로서 뒷단의 다양한 처리를 담당하게 됩니다.
  • 웹 서버에서 사용자의 추가적인 요청을 처리하거나 DB로 데이터를 넘겨주는 역할을 합니다.
  • 웹 서버분리 시킴으로서 서버 부하를 줄여주었습니다.

RDS (stand-by)

  • 사용자의 정보가 저장되는 공간이며 가장 보안에 예민하고 중요한 역할을 하고 있습니다
  • 사용자의 민감 정보가 저장 되는 공간이기 때문에 장애가 발생하거나 보안에 취약해서는 안됩니다.
  • 장애에 대비 하기 위해 Stand-by DB를 구성하여서
  • 장애가 발생하여 Master DB가 멈추어도 Stand-by가 동작하도록 구성했습니다.

 

VPN (Virtual Private Network)

  • 가설 사설망뜻하며 데이터를 위해 암호화된 터널을 생성하고 IP 주소를 숨기는 역할
  • 회사AWS 간 VPN생성하여 회사에서도 VPN을 통해 AWS 리소스로 접근이 가능하도록 구성했습니다

 

Simple Notification Service

  • 메시지를 전송하는 관리형 서비스입니다.
  • 이를 통해 관리자오토스케일링이라던지, 경고에 대한 알림받을 수 있도록 구성했습니다.

 

Cloud Watch

  • 실시간으로 실행 중인 애플리케이션모니터링하는 서비스입니다.
  • 구축된 인프라에 대해 관리자가 모니터링할 수 있도록 구성하였으며
  • 이를 트리거로 하여 오토스케일링일어나게 구성 했습니다.

 

Cloud Trail

  • 계정에 대한 거버넌스, 규정 준수, 운영 및 위험 감사활성화하는 데 도움이 되는 서비스
  • 이를 통해 사용자 활동을 모니터링 하여 로그로 기록되게끔 구성했습니다.

 

Internet GateWay

  • VPC인터넷 간인터넷 통신을 할 수 있게 해주는 서비스입니다.
  • 이를 통해 AWS 내의 리소스외부 통신이 가능합니다

 

Public Subnet

  • 외부와 통신이 가능하게 열려있는 서브넷입니다.
  • NAT배치시켜 외부 통신할 수 있도록 구성했습니다

 

Private Subnet

  • 외부와 통신이 가능하지 않고 내부 통신만 가능하게 설정 되어있는 서브넷입니다.
  • 모든 서버프라이빗 서브넷에 배치시킴으로서 인터널 통신만 가능하게 설정했습니다.

 

VPC(Virtual Private Cloud)

  • 사용자가 정의한 가상 네트워크라고 불립니다.
  • 논리적으로 공간을 격리하여 리소스를 할당하였습니다

 

Available Zone

  • 리전 내에 격리된 위치를 뜻합니다.
  • 단일 AZ를 사용하는 것보다 장애 발생에 대비할 수 있게 되어 가용성이 향상되기 때문에 구성하였습니다

 

Auto scailing

 

반응형
LIST
반응형
SMALL

3-Tier란?


  • 플랫폼3계층으로 나누어 별도의 논리적/물리적장치에 구축 및 운영하는 형태를 말합니다.
💡 예를 들어, 웹 서버를 운영하는 경우 서버 한 대한꺼번에 모든 기능들을 구축하지 않고
데이터를 저장하고 읽는 데이터 계층 데이터를 처리하는 애플리케이션 계층
데이터를 표현해주는 프레젠테이션 계층과 같이 3계층으로 나누어
각 계층 별로 역할 분담을 하여 일을 효율적으로 할 수 있습니다.

 

3-Tier의 구조는 어떻게 생겼을까?


프레젠테이션 계층, 애플리케이션 계층, 데이터 계층으로 나누는 구조입니다.

각 계층 별로 수행하는 역할

 

프레젠테이션 계층(Presentation Tier) - Web Server


  • 사용자가 보려고 하는 화면 등을 제공해주는 서버이며 흔히 사용하는 HTTP 통신을 통하여 인터넷을 사용할 때 우리가 보는 브라우저 화면기능 요소들을 보여주는 계층
  • 주로 사용자 인터페이스지원하며, 이 계층은 Front-End라고 부릅니다.
  • 이 계층에서는 사용자 인터페이스와 관계 없는 데이터를 처리하는 로직 등은 포함하지 않음.
💡 HTML, Javascript, CSS, 사진 자료 등이 해당 됩니다.

 

 

애플리케이션 계층(Application Tier) - WAS Server


  • 요청되는 정보를 어떠한 규칙을 바탕으로 처리하고 가공하는 것들을 담당
  • 첫 번째 계층 또는 클라이언트 계층에서 이 계층을 바라 보기에는 서버처럼 동작(응답)
  • 세 번째 계층프로그램에 대해서는 마치 클라이언트처럼 행동 (요청)
  • 이 계층은 미들웨어 또는 Back-end 라고도 불립니다.
  • 이 계층에서는 프레젠테이션 코드데이터 관리를 위한 코드는 포함하지 않음
💡 PHP, Java 등이 해당됩니다.

 

데이터 계층(Data Tier) - DataBase Server


  • 데이터베이스데이터베이스접근하여 데이터를 읽거나 쓰는 것관리하는 것
  • 주로 DBMS이 계층에 해당됩니다. 데이터 계층 또한 Back-end라고 부릅니다.
  • 작업을 지원하고 사용자들의 데이터들을 보관하는 계층이다.
  • 흔히 데이터를 활용할 시, 질의문(SQL)을 통하여 필요한 데이터를 확인

 

💡 MySQL, MongoDB등이 해당됩니다.

 

2-Tier와의 차이점은 무엇일까?


 

  2-Tier 3-Tier
개발 편의성 측면 프로그래밍 개발에 용이함 프레젠테이션 로직비즈니스/데이터 접근 로직별도로 작성하므로 2-Tier에 비해 개발이 불편
재사용성 측면 모든 로직클라이언트에 존재하므로 내용 변경 시모든 로직을 재개발 재사용성 측면에 좋지 않다. 동일한 비즈니스 로직필요로 하는 프레젠테이션 로직 을 다양하게 구현, 비즈니스 로직모듈화하여 클라이언트 / 서버 환경웹 환경에서 동시에 사용 가능
성능 측면 사용자 수가 증가함에 따라 성능이 급격하게 저하 된다. 동시 사용자 수가 증가해도 일정한 응답 속도처리량 을 보장한다
자원 활용 측면 H/W 자원(CPU, 메모리 등)과 데이터베이스 자원을 비효율적으로 사용한다. 미들웨어에서 부하 분산, 큐잉 메커니즘을 통해 효율적 으로 자원을 활용한다.
시스템 관리 측면 H/W 자원(CPU, 메모리 등)과 데이터베이스
자원을 비효율적으로 사용한다.
미들웨어에서 부하 분산, 큐잉 메커니즘을 통해 효율적
으로 자원을 활용한다.

 

💡  2Tier 방식에서는 보다 간편한 아키텍처로 인해 프로그램은 편해질지 몰라도 실행 파일 내부에 admin 계정에 대한 정보가 고스란히 존재하여 보안에 아주 치명적인 단점

     3Tier 방식은 DB 연결에 대한 어떤 정보도 클라이언트가 보관할 필요가 없기 때문에 보안 측면에서 훨씬 좋다

반응형
LIST
반응형
SMALL

9. CDN (콘텐츠 딜리버리 네트워크)


9.1 CloudFront

  • 사용자나 게임을 다운로드하거나 업데이트할 때 가장 가까운 네트워크에서 받을 수 있도록
  • 예를 들어, 서버가 한국에 있는 경우 미국에서 게임을 다운로드하면 느리기 때문에,
  • 미국 쪽에 게임 다운로드할 수 있는 서버를 제공하여 서비스가 되도록 해주는 서비스이다.
  • .html, .css, .js 및 이미지 파일과 같은 정적 및 동적 웹 콘텐츠를 사용자에게 더 빨리 배포하도록 지원하는 웹 서비스.
  • 대규모 파일/이미지 서비스.

 

10. Management


10-1 CloudWatch (기본 모니터링 서비스)

  • AWS에서 제공하는 인프라 기본 모니터링 시스템이다.

1. CPU, 네트워크, 디스크 I/O 모니터링은 기본으로 제공한다.

  • '메모리'는 별도의 스크립트를 만들어야 모니터링이 가능하다.

2. 5분 단위로 모니터링한다. 무료이다.

  • Cloudwatch Detail이라고 1분 단위로 모니터링하도록 변경할 수 있다.

3. 로그는 2주간 저장된다.

  • 장기간 저장은 아니다.

 

10-2 CloudWatch  logs 에이전트

  • 서버 EC2로그를 모니터링하는 에이전트이다.
  • 일반적으로 로그는 S3 스토리지에 저장한다.

 

10.2 SNS (Simple Notification Service)

  • 단순 알림 서비스이다.
  • Email, SMS 핸드폰 문자 등 여러 방식으로 알람을 제공하는 서비스이다.

 

10-3 SES  (Simple Email Service)

  • 아마존에서  Email로 알람을 전달하는 서비스이다

 

10-4 Auto Scaling

  • 트래픽에 따라 EC2 인스턴스들을 확장해주는 서비스 위의 ELB와 함께 사용되는 기능
  • 특정 트래픽을 초과자동으로 EC2 인스턴스를 생성
  • 다시 트래픽이 줄어들면 추가 생성하였던 EC2 인스턴스들을 삭제하는 유연한 서비스

 

10-5 CloudTrail

  • AWS의 API 호출을 기록하고 로그를 남기는 서비스.
  • AWS에서 글로벌하게 적용해 제공한다.
  • 서버 단위 등으로 제공하는 것이 아니고, 전체에 대해 Enable / Disable라는 것이다.
  • 감사 추적에 대비해 사용한다.
  • 서버 간 통신에 대한 로그를 남길 수 있다.

 

10-6 CloudFormation (자동 구축 도구)

  • 템플릿 파일을 이용해 VPC, ELB, EC2를 한 번에 구축할 수 있게 해주는 서비스이다.
  • 한국에 네트워크와 서버를 구축하고 미국에 동일한 네트워크와 서버를 구축할 때 사용한다.

10-7 Storage Gateway

  • 온프라미스의 데이터를 AWS에 전송할 경우 사용한다.
  • 하이드브리드 환경에서 사용한다.

 

10-8 DMS (데이터 마이그레이션 서비스)

  • 온프라미스 -> AWS  ,  AWS -> AWS ,  AWS-> 온프라미스도 지원이 가능하다.

 

10-9 SnowBall

  • 대량의 데이터를 AWS로 마이그레이션 할 때 이용하는 서비스.
  • 물리적으로 제공한다.
  • 운송회사를 통해 배송하는 서비스.
  • IDC 이전
반응형
LIST
반응형
SMALL

7. Database

 


 

7-1 RDS (Amazon Relational D Services)

  • RDBMS 클라우드 서비스 Amazon Aurora, MySQL, MariaDB, PostgreSQL, Oracle, SQL Server등을 지원하고 있습니다.

 

7-2 DynamoDB

  • AWS의 NoSQL 데이터베이스 서비스
  • 성능과 가용성을 위해 3곳의 AZ(가용영역)에 복제하여 저장
  • Dynamo DB의 데이터는 SSD에 저장됨, 읽고쓰기가 빠름

 

 

7-3 ElastiCache

  • Database Caching 서비스.Memcached, Redis 호환을 지원하고 있습니다.
  • 인 메모리 데이터 스토어 서비스

 

 

8. Storage


8-1 S3 (Simple Sotrage Service)

  • 인터넷용 스토리지 서비스 (=NAS)
  • 버킷에 저장할 수 있는 객체수에 제한이 없음
  • 객체 크기는 최대 5TB 지원 하며, 버킷 크기는 제한이 없음
  • HTTP/S 엔드 포인트를 사용하여 웹에서 원하는 양의 데이터를 저장하고 검색할 수 있음
  • AWS를 사용하여 서버측 암호화를 하거나, 고객이 관리하는 클라이언트 측 암호화를 하도록 선택할 수 있음

S3의 개념

  • 데이터를 버킷 내에 객체로 저장
  • 객체는 파일과 해당 파일을 설명하는 모든 메타데이터 구성
  • 하나의 계정에 최대 100개의 버킷 보유
  • S3 생성시 어느 리전생성할지 지정해야 하며, 버킷을 프로젝트 단위로 생성

 

8-2 EBS (Elastic Block Store)

  • 클라우드의 Amazon EC2 인스턴스에 사용할 영구 블록 스토리지 볼륨을 제공. (=하드디스크)
  • OS는 EC2에  설치되나,  데이터의 경우는 EBS에 설치
  • 데이터를 빠르게 액세스하고 장기간 지속해야 하는 경우
  • EBS 볼륨암호화된 볼륨으로 시작할 수 있으며, 볼륨에 저장된 데이터, 디스크 I/O, 볼륨에서 생성된 스냅샷이 모두 암호화 됨
  • Amazon S3까지 지속되는 EBS 볼륨의 특정 시점 스냅샷을 생성할 수 있음

EBS VS S3

8-3 Glacier

  • Amazon S3 Glacier Developer Guide
  • 자주 사용되지 않는 데이터 즉, '콜드 데이터'에 최적화된 스토리지 서비스
  • 데이터 보관백업을 목적으로 보안 기능과 함께 내구성 있는 저장 공간을 제공하는 매우 저렴한 스토리지 서비스
반응형
LIST

+ Recent posts