데브코스 백엔드 3기 117일차
1차 팀 프로젝트 끝,
시간이 정말 빠르다!
프로젝트 회고도 적고있는 중!
이번주는 클라우드 컴퓨팅에 대해 배웠다
그 중에 대표적인 AWS!
일기(회고)
- 숨 살짝 쉬었다가, 바로 2차 팀프로젝트 준비!
이번에는 프론트까지 협업을 같이하기 때문에 더 어려움이 많겠지만 그만큼 더 기대가 된다!- 5팀 첫미팅 첫 단체사진ㅋㅋㅋ
우리팀 뭔가 느낌이 좋아!
프론트분들이 게더를 엄청 신기해하셔서(나도 그랬쥐) 게더 구경에 앞장서보았다 (친해지고 싶어서 자진함ㅋ,,) - 다시 게더사진 열심히 찍어둬야지!
이번엔 오프라인 필참도 있어, 사진광인 나는 실물사진도 많이 찍을예정ㅋㄷ - 우리팀에 고양이 키우는분 있는데, 진짜엄청나게 귀엽다
힐링은 걱정 없겠다 우리팀의 복지..!
- 5팀 첫미팅 첫 단체사진ㅋㅋㅋ
- 팀프로젝트 끝나고 좀 해이해졌었다
일단 주말내내 나가서 놀고, 월화도 누워서 쉬는 시간을 가졌음 ㅎㅎ
일주일도 안쉬고, 바로 2차 준비..!
빡세다 하면서도 프론트팀과 미팅 후 알아봐야할게 많다는걸 새삼 깨달은 후 다시 의지가 돌아옴
정말 신기하면서 요상하다, 공부를 하면 할수록 궁금한게 늘어난다 = 공부할게 늘어난다
- 이번 프로젝트에서는 배포도 하면서 인프라쪽 공부도 해보고싶다
- CI/CD를 위해 Github Actions와 AWS CodeDeploy를 사용해볼 예정이다
그리고 생각보다 프로젝트 중간에 스키마가 변경되는 일이 꽤 있어 Flyway도 사용해보고 싶다
Jacoco로 코드 커버리지도 해보고 싶고 - Elastic search도 사용해보고싶고 비동기 처리도 해보고싶다
Session storage와 메일관련 로직을 짜보고 싶어 회원파트를 맡아보고 싶은데 어찌될지 모르겠다 일단 어필해보아야쥐
지난번 프로젝트에 사용했던 캐시도 조금더 깊게 공부해보고 적용해보고싶구
해보고싶은게 많군 - 아! 그리고 지난번에 Jira 사용이 나름 성공적이었기에, 좀 더 다듬어서 이번에는 Git Hook까지 적용해보기!
- CI/CD를 위해 Github Actions와 AWS CodeDeploy를 사용해볼 예정이다
클라우드 서비스
- 클라우드 컴퓨팅 : IT resource를 제공받고, 사용한만큼 지불하는 방식
-> 관리용이, 비용절감, 탄력적(으로 리소스 할당 가능)- AWS : 클라우드 플랫폼
-
클라우드 유형 : 리소스 관점에서 할당받는것
- AWS 용어
- 가상화 : 물리적x, 논리적 구성 -> 하드웨어보다 효율적으로 활욜할 수 있게 해주는 프로세스
- 가상머신(VM) : 가상화기반 물리적인 컴퓨터를 시뮬레이션 할 수 있도록 제공하는 가상환경
- 스냅샷 : 물리적인 요소 하나하나를 스냅샷이라는 개념으로 받아들이기
- 특정 스냅샷 시점으로 서버를 구동하는게 가능함
- 데이터센터 : 서버들 모아두고 네트워크로 연결해둔 시설
- 리전 : 데이터센터를 묶은 물리적 위치
- 가용영역 AZ = 데이터센터
- 하나의 리전안에 최소 2개 이상의 가용영역으로 구성 <- 천재지변으로부터 데이터 보호 위함
EC2
논리적인 리로스 서버하나 할당받는 것
- 하나의 인스턴스마다의 별도의 서비스 이용가능
- 인스턴스 하나하나를 가상 컴퓨팅환경이라고 봄
- AMI를 이용해 인스턴스를 쉽게 만들 수 있음
- AMI : 템플릿 느낌, 운영체제 + 소프트웨어
- 만든 인스턴스는 키페어를 통해 로그인
- AWS는 퍼블릭키 저장 / 사용자는 개인키 저장
인스턴스 스토어 볼륨
물리적인 저장 장치를 가상화 한 스토리지 드라이브
- 인스턴스에서 실행되는 OS를 저장
- 스토리지 볼륨으로 저장해서 서비스 사용
-> EBS 볼륨 사용해 영구 스토리지 볼륨에 데이터 저장
EIP
탄력적 IP주소 제공 (고정 IP주소)
- 각각의 인스턴스는 별도의 IP와 도메인을 제공
- 이를 인스턴스 내렸다 올리거나 or 재시동해도 고정적으로 제공할 수 있게해줌
VPC
EC2는 특정 네트워크 안에 있게 됨
- AWS에서 VPC라는 가상네트워크 제공
- VPC에서 EC2 저장 후 연결
실습해보기
1. Key Pair 만들기
인스턴스에 접근할 수 있는 유일한 키
- 프라이빗 키 파일형식
.pem
: mac, linux.ppk
: window
- key pair 유형 : RSA
2. EC2 인스턴스 만들기
- OS 선택 : amazon linux (AMI 선택 가능)
- 인스턴스 유형 : 프리티어 사용가능한걸로
- 키페어 : 위에서 만든걸로 설정 -> 그걸로만 접근 가능해짐
- 보안그룹 : default
- 스토리지 구성
3. 터미널로 접근
.pem
파일 있는곳으로 이동 ->chmod 400
으로 권한 축소(읽기 전용) ->ssh -i
로 서버에 접속
4. 인바운드 규칙 편집
- HTTP 80 port 열기
5. Elastic IP 적용
- public IP, DNS를 고정적으로 설정하는 법
- 탄력적 IP 주소 할당 -> 탄력적 IP 주소 연결 -> 인스턴스 연결
Elastic Beanstalk
aplication을 업로드하기만하면 용량 프로비저닝, 로드밸런싱, 모니터링에 대한 세부정보를 자동으로 처리
- 배포 시, EC2 등의 AWS resource를 하나이상 프로비저닝 해 application을 실행함
AWS Database Service
클라우드에서 실행하는 격리된 데이터베이스 환경 제공
- AWS Database Service 사용 안하고, EC2에 직접 DB 설치도 가능
RDS
RDBMS
- 직접 시스템 로그인 불가능
- serverless 아님
- RDS 사용하게 되면 자동 백업 = 자동 스냅샷 (수동 스냅샷도 가능)
- 파라미터 그룹 : DB에 대한 세팅(ex) Time zone)
Document DB
NoSQL
- Mongo DB API와 연동됨
- 문서 전용 데이터베이스
- JSON 데이터 사용
- 유연한 인덱싱 제공
- Mongo DB 용어
- Table -> Collection
- Row -> Document
- Column -> Field
Dynamo DB
NoSQL
- auto scaling 됨 -> 용량 걱정 없음
- key-value 중심
Route53
Network 관련 서비스
DNS(Domain Name System) 웹서비스 + 모니터링 + L4 + GSLB
- 도메인 등록 / DNS 라우팅 / 상태 확인
- 글로벌하게 등록된 네임서버 -> 지역적으로 등록 -> 로컬에 등록된 네임서버 찾아가 -> 원하는 도메인 찾아갈 수 있도록
- 도메인 등록하기 위해 도메인 구입(호스팅 업체 or AWS 내에서 가능) -> 호스팅 영역 생성 + 호스팅 업체의 네임서버 변경 -> AWS 내에서 도메인 찾아가는데 사용
오늘의 영상
애쉬의 AWS 살짝 알은체하기
AWS EC2(Elastic Compute Cloud)
- 용어
- 리전 : 데이터센터 묶은 물리적 위치
- 가용영역 AZ = 데이터센터
- 각 리전안에 최소 2개 이상의 데이터센터 <- 천재지변으로부터 데이터 보호
- VPC(Virtual Private Cloud) : 논리적으로 격리된 사용자 전용 가상 네트워크
- subnet : VPC 영역안에서 망을 쪼갬, 단일 AZ내에 위치
- 데이터 센터는
- 물리적으로 다른곳에 위치
- 논리적으로 같은 네트워크(VPC)안에 존재
-
VPC 내부
- 비유를 너무 잘해주셨음 개념이 어려웠는데 이해에 너무 도움이 되었다!
- Internet Gateway : 인터넷과 연결 (= 톨게이트)
- Router : 인터넷 트래픽을 route table에 해당하는 주소보고 맞는 방향으로 전송 (= 갈래길)
- route table (= 표지판)
- NACL(Network Access Control List) : 인터넷 트래픽이 subnet(= 동네)에 접근 전 허용한 트래픽인지 확인 (= 검문소)
- Subnet
- Sercurity Group : 인스턴스에 접근하는 트래픽이 허용된건지 확인 (= 집 앞 개)
- NACL과 보안그룹
- 공통점 : 인바운드, 아웃바운드 트래픽 확인
- 차이점
- NACL : VPC 내부에 생성, subnet 단위로 트래픽 확인
- 보안그룹 : subnet 내부에 생성, 인스턴스 단위로 트래픽 확인
- private subnet : 외부인터넷과 단절 -> 보통 데이터베이스 서버로 이용
- 데이터베이스 서버로 이용할래도 여러 설치파일 인터넷에서 다운로드 필요
-> 필요한 기술 : NAT(Network Address Translation) Gateway - NAT Gateway를 public subnet의 인스턴스안에 설치 후 private subnet의 인스턴스와 연결
- private subnet의 Source IP를 NAT Gateway가 자신의 Source IP로 바꿔서 인터넷으로 요청 후 응답받아 전달
- 데이터베이스 서버로 이용할래도 여러 설치파일 인터넷에서 다운로드 필요