반응형
리뷰 (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
- GUI - MySQL Workbench
- CLI (Linux) - mysql package
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 -h<host name> -u<사용자 ID> -p<password>
- 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) 패키지 다운로드
- curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash
- nvm 활성화
- . ~/.nvm/nvm.sh
- nvm 명령
- nvm ls - 현재 설치된 Node.js 목록 확인
- nvm을 이용한 Node.js 설치
- nvm install --lts- 최신 LTS 버전 Node.js 설치
- node --version - 설치된 version 확인
- nvm (node version manager) 패키지 다운로드
- 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 init - package.json 파일 생성, 프로젝트에 대한 정보 및 의존성 정보 포함
- npm install - node project에서 필요한 패키지를 package.json 파일 내용을 참조하여 설치
- REPL (Read Eval Print Loop) 방식으로 Node.js 사용
############## 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 처리
- Node.js 환경 구성 및 server program 구성
- curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash
- . ~/.nvm/nvm.sh
- nvm install --lts
- node <실행 파일명>
- 보안 그룹 수정
- 인바운드 규칙 22, 3306, 8080 포트 허용
DB Server - Data 저장
- Amazon RDS 구성 및 DataBase 설정
ETC
Cloud Design Pattern - 문제 해결을 위한 Infra 구성에 대한 검증된 구성 방법
TIF
오늘 수업 막판에 스퍼트를 땡기더니 역시 오늘이 AWS 마무리였다.
대충 그걸 느껴서 그랬는지 오늘은 수업과 실습에 집중했고, 잘 따라갔고, 잘 마무리했다.
Linux 서버 구축하면서 느꼈던 것이지만 다 지우고 처음부터 다 다시 해봐야겠다.
VPC, 서브넷 설정, EC2 Instance 생성, DB 연동 등등 주말에 쭉 진행해보고 틈 날 때 블로그로 정리해봐야겠다.
주말이라고 놀지 말고 적당히 쉬고, 빡세게 공부하자.
2022. 09. 16 에 작성된 글입니다.
반응형
'구름 쿠버네티스' 카테고리의 다른 글
구름 쿠버네티스 전문가 과정 6기 - 34일차 (0) | 2023.10.10 |
---|---|
구름 쿠버네티스 전문가 과정 6기 - 33일차 (1) | 2023.10.06 |
구름 쿠버네티스 전문가 과정 6기 - 31일차 (1) | 2023.10.04 |
구름 쿠버네티스 전문가 과정 6기 - 30일차 (0) | 2023.09.27 |
구름 쿠버네티스 전문가 과정 6기 - 29일차 (0) | 2023.09.25 |