어쩌다 IT
article thumbnail
반응형

리뷰 (Review)

더보기
S3
  • 데이터를 저장할 때 버킷 단위로 저장하고 저장되는 단위는 객체 (object)
  • 별도의 File system에 의하여 객체를 관리하지 않는다.
  • 버킷에 별도의 폴더를 생성할 수 있으나 일반적인 디렉토리와는 다른 의미
  • 무제한의 저장 공간을 제공하고, 한 객체의 최대 크기는 5TB
  • 버킷은 데이터를 저장하는 공간을 의미

 

S3 기능

  • 가장 주 목적은 객체 저장 - 데이터 저장
  • 멀티 파트 업로드
  • 버전 관리
  • 수명 주기 관리
  • 정적 웹 서비스 (사이트) 호스팅
  • 전송 속도 향상
    • edge location을 이용하여 contents 전송 속도 향상
    • Amazon Cloud Front (CDN) 서비스를 이용한 전송 속도 향상

 

S3 사용 적합한 경우

  • 한 번 쓰고 여러 번 읽어야 하는 경우
  • 데이터가 다양하고 데이터 량이 지속적으로 증가하는 경우
  • 사용자가 많고 데이터 접근이 일시적으로 급증하는 경우

DataBase

  • 구조화된 정보 또는 데이터의 조직화된 모음
  • 데이터를 일정한 형식으로 저장 관리
  • DBMS 로 데이터의 집합을 생성하고 저장 및 관리

 

DataBase 종류

  • 관계형 데이터베이스 (Relational DataBase, RDB)
    • 관계 이론에 따라 데이터 관리
    • 정형화된 데이터를 관리할 때 편리
    • SQL을 이용하여 데이터 처리 (CRUD) script
      • DDL (Data Definition Language)
      • DCL (Data Control Language)
      • DML (Data Manipulation Language)
  • 비관계형 데이터베이스 (No-SQL DataBase)
    • 비정형 데이터 (이미지, 동영상, 음성, 자연어 등) 에 대한 데이터 관리에 편리
    • 프로그램에 의한 처리가 쉽다.
    • 별도의 처리용 script가 없다.

 

DataBase 활용

 

RDS 서비스를 통해 생성된 DB Instance 사용

  • DB Instance에 대한 제어를 수행하기 위해서는 RDBMS client tool을 통해 제어 수행
  • MySQL 기본 port - 3306 port
  • MySQL client tool

 

MySQL Workbench를 이용한 DB Instance 관리 실습

더보기
  • MySQL Connections 생성
    • MySQL 기반 DB Instance에 접속하는 정보
    • Connection Name - 임의로 설정
    • Hostname - DB Instance 엔드포인트
    • Username - DB Instance 생성 시 입력한 사용자 ID
    • Password - DB Instance 생성 시 입력한 Password
    • Test Connection 선택하여 DB Instance와 연결 Test 수행
  • Schema - DataBase / Table에 대하여 적용하는 명령
  • MySQL Connection을 이용하여 DB Instance 접속
  • Navigator 메뉴의 Schemas 탭을 선택하면 DB와 Table 생성 및 확인 가능
    • DB 생성
    • Table 생성
      • Charset/Collation - utf8, utf8_general_ci 설정 (MySQL에서 한글 사용을 위한 encoding 설정)
      • Field 구성
  • 생성된 table에 대한 SQL 명령 중 DML (CRUD 동작 제어) 명령으로 제어
    • SQL 명령은 대소문자 구별을 하지 않는다. 
    • 레코드 삽입 - INSERT INTO <테이블명> (필드 목록) VALUES (값 목록)
    • 레코드 검색 - SELECT <필드 목록> FROM <DB명.테이블명> WHERE <조건식>
      • SELECT * FROM dbtest.person_tb; - person_tb의 모든 레코드 검색
      • SELECT id, name, age FROM dbtest.person_tb; - person_tb의 모든 레코드 검색
      • SELECT name, age FROM dbtest.person_tb; - person_tb의 name, age 검색
      • SELECT * FROM dbtest.person_tb WHERE age > 20; - person_tb의 age 20보다 큰 모든 레코드 검색
      • SELECT count(id) FROM dbtest.person_tb; - person_tb의 id 개수 count
      • SELECT avg(age) FROM dbtest.person_tb; - person_tb의 age 평균

 

EC2 Instance에서 MySQL Client 프로그램을 이용한 DB Instance 관리 실습

더보기
  • Linux용 MySQL client 패키지 설치
    • sudo yum -y install mariadb.x86_64
  • Linux용 MySQL client 명령을 이용한 DB Instance 접속
    • mysql -h<host name> -u<사용자 ID> -p<password>
      • -h : DB Instance 엔드포인트
      • -u : DB Instance 생성 시 입력한 사용자 ID
      • -p : DB Instance 생성 시 입력한 password
    • 접속이 안될 시 AWS EC2 보안 그룹에서 인바운드 규칙 수정
  • MySQL 명령
    • show databases; - DataBase 목록 출력
    • use <DB명>; - 지정한 DB로 전환
    • show tables; - 이동한 DB의 table 목록 출력
    • desc <table명>; - 지정한 table의 구조 출력

Web Service 제공을 위한 Back-end

  • Web Service
    • HTTP 프로토콜 기반으로 Service 제공
    • HTTP 프로토콜 사용한 Web Service는 client 요청에 대하여 server는 항상 HTML을 결과로써 제공
    • Web Service의 Front-end는 Web Browser를 사용하는 것을 전제로 함으로 HTML/CSS/JS 이용하여 프로그래밍
    • Web Service의 Back-end client 요청에 대한 처리를 수행하고 결과를 항상 HTML로 제공
    • Back-end 구성
      • client의 요청을 수신하고(request) 결과를 전송하는(response) 부분 - Web Server
      • Business Logic을 처리하는 부분 - Application Server
        • JSP / ASP / PHP / ...
        • Node.js - JavaScript를 서버에서 동작할 수 있도록 하는 run-time
        • python 등
      • DataBase 부분 - DB Server

 

Node.js를 이용한 Back-end 처리 실습

더보기
  • Node.js 설치
    • nvm (node version manager) 패키지 다운로드
    • nvm 활성화
      • . ~/.nvm/nvm.sh
      • nvm 명령
        • nvm ls - 현재 설치된 Node.js 목록 확인
    • nvm을 이용한 Node.js 설치
      • nvm install --lts- 최신 LTS 버전 Node.js 설치
      • node --version - 설치된 version 확인
  • Node.js 사용 유형
    • REPL (Read Eval Print Loop) 방식으로 Node.js 사용
      • Node.js는 Server에서 JavaScript를 실행시킬 수 있는 run-time 역할 수행
      • REPL 방식(interpreter)으로 JavaScript 명령 실행 및 결과 확인
      • node - REPL 방식으로 node.js 실행
      • .exit - REPL 환경 종료
    • Node.js script 파일(.js)을 작성하여 일괄 실행
      • editor 프로그램을 이용하여 JavaScript 코드를 작성하여 일괄 실행하는 방식
      • script 파일의 확장자는 .js
      • Node.js 프로그램은 script 단위로 작성 및 관리
      • 프로젝트 성격의 디렉토리 생성
      • 해당 디렉토리에 다음 명령을 수행하여 프로젝트 초기화
        • npm init - package.json 파일 생성, 프로젝트에 대한 정보 및 의존성 정보 포함
          • npm(node package manager) - Node.js에서 사용하는 package 설치 및 관리 명령
      • npm install - node project에서 필요한 패키지를 package.json 파일 내용을 참조하여 설치
############## REPL 방식 ##############

[ec2-user@ip-12-12-12-12 ~]$ node
Welcome to Node.js v16.17.0.
Type ".help" for more information.
> var number1 = 10;
undefined
> var number2 = 20;
undefined
> var result = number1 + number2;
undefined
> console.log( `${number1} + ${number2} = ${result}` );
10 + 20 = 30
undefined
>
  • Linux 환경에서 80 port는 관리자 권한을 가지고 있어야 사용할 수 있다.
  • 사용자가 작성한 server program은 관리자 권한을 가지고 있지 않으므로 80 port를 직접 사용할 수 없다.
  • Node.js로 작성한 프로그램으로 직접 80 port를 사용할 수 없으므로 Web Server와 Node.js로 구성한
    Application server를 포워딩시켜서 Web Service 제공 프로그램이 80 port를 사용할 수 있도록 시스템을 구성한다.

AWS 서비스 활용 Infra 구축 실습

 

실습 내용 설계

 

 

더보기

Web Server - 사용자로부터 요청 수신 및 응답

  • NginX 설치
    • sudo yum update
    • sudo yum install -y gcc gcc-c++ : C/C++ compiler 설치
    • sudo amazon-linux-extras install nginx1 : NginX 설치
    • systemctl status nginx : NginX 설치 확인
    • sudo systemctl start nginx : NginX daemon 시작
    • sudo systemctl enable nginx : NginX boot시 자동 실행 설정
  • Web Server EC2와 Application EC2 연결
    • 80 port로 들어오는 내용을 Application Server로 포워딩 시켜서 처리
    • NginX 환경 설정에 Application Server로 포워딩 되게 설정
    • /etc/nginx/nginx.conf - NginX 환경 설정 파일
    • sudo vi[또는 nano] /etc/nginx/nginx.conf 에서 아래 코드 추가 및 변경 후 NginX 재시작
location / {
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header Host $http_host;
                proxy_set_header X-NginX-Proxy true;

                proxy_pass http://application server ip:port/;
                proxy_redirect off;
        }
  • 보안 그룹 수정
    • 인바운드 규칙 22, 80, 443 포트 허용

 

Application Server - Business Logic 처리

 

DB Server - Data 저장

  • Amazon RDS 구성 및 DataBase 설정

ETC

 

Cloud Design Pattern - 문제 해결을 위한 Infra 구성에 대한 검증된 구성 방법


TIF

오늘 수업 막판에 스퍼트를 땡기더니 역시 오늘이 AWS 마무리였다.

대충 그걸 느껴서 그랬는지 오늘은 수업과 실습에 집중했고, 잘 따라갔고, 잘 마무리했다.

Linux 서버 구축하면서 느꼈던 것이지만 다 지우고 처음부터 다 다시 해봐야겠다.

VPC, 서브넷 설정, EC2 Instance 생성, DB 연동 등등 주말에 쭉 진행해보고 틈 날 때 블로그로 정리해봐야겠다.

 

주말이라고 놀지 말고 적당히 쉬고, 빡세게 공부하자.

 

 

2022. 09. 16 에 작성된 글입니다.

반응형
profile

어쩌다 IT

@jwlish

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!