데브코스 백엔드 3기 117일차

1차 팀 프로젝트 끝,
시간이 정말 빠르다!
프로젝트 회고도 적고있는 중!
이번주는 클라우드 컴퓨팅에 대해 배웠다
그 중에 대표적인 AWS!


일기(회고)

  • 숨 살짝 쉬었다가, 바로 2차 팀프로젝트 준비!
    이번에는 프론트까지 협업을 같이하기 때문에 더 어려움이 많겠지만 그만큼 더 기대가 된다!
    • 5팀 첫미팅 첫 단체사진ㅋㅋㅋ
      우리팀 뭔가 느낌이 좋아!
      프론트분들이 게더를 엄청 신기해하셔서(나도 그랬쥐) 게더 구경에 앞장서보았다 (친해지고 싶어서 자진함ㅋ,,)
    • 다시 게더사진 열심히 찍어둬야지!
      이번엔 오프라인 필참도 있어, 사진광인 나는 실물사진도 많이 찍을예정ㅋㄷ
    • 우리팀에 고양이 키우는분 있는데, 진짜엄청나게 귀엽다
      힐링은 걱정 없겠다 우리팀의 복지..!

    0208


  • 팀프로젝트 끝나고 좀 해이해졌었다
    일단 주말내내 나가서 놀고, 월화도 누워서 쉬는 시간을 가졌음 ㅎㅎ
    일주일도 안쉬고, 바로 2차 준비..!
    빡세다 하면서도 프론트팀과 미팅 후 알아봐야할게 많다는걸 새삼 깨달은 후 다시 의지가 돌아옴
    정말 신기하면서 요상하다, 공부를 하면 할수록 궁금한게 늘어난다 = 공부할게 늘어난다


  • 이번 프로젝트에서는 배포도 하면서 인프라쪽 공부도 해보고싶다
    • CI/CD를 위해 Github Actions와 AWS CodeDeploy를 사용해볼 예정이다
      그리고 생각보다 프로젝트 중간에 스키마가 변경되는 일이 꽤 있어 Flyway도 사용해보고 싶다
      Jacoco로 코드 커버리지도 해보고 싶고
    • Elastic search도 사용해보고싶고 비동기 처리도 해보고싶다
      Session storage와 메일관련 로직을 짜보고 싶어 회원파트를 맡아보고 싶은데 어찌될지 모르겠다 일단 어필해보아야쥐
      지난번 프로젝트에 사용했던 캐시도 조금더 깊게 공부해보고 적용해보고싶구
      해보고싶은게 많군
    • 아! 그리고 지난번에 Jira 사용이 나름 성공적이었기에, 좀 더 다듬어서 이번에는 Git Hook까지 적용해보기!



클라우드 서비스

  • 클라우드 컴퓨팅 : IT resource를 제공받고, 사용한만큼 지불하는 방식
    -> 관리용이, 비용절감, 탄력적(으로 리소스 할당 가능)
    • AWS : 클라우드 플랫폼


  • 클라우드 유형 : 리소스 관점에서 할당받는것

    zzzzzzzz


  • 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로 바꿔서 인터넷으로 요청 후 응답받아 전달


업데이트: