[2023.01.09] 개발자 교육 75일 차 : 강의-AWS 학습(Mac) [구디 아카데미]

DaramGee·2024년 1월 9일
0

학습과정

배포를 어떤 서버에 할 것인가????

  • 물리서버
    - 환경을 옮기면 똑같이 다시 구성해야함.(시간 많이 걸림) - 예전엔 물리서버 하나에 배포
  • 가상서버
    - 필요한 소프트웨어 있음
    - VM(Virtualbox, Vmware 등) 형식- 웹 호스팅 시 -> 클라우드 서비스(AWS, GCP 등) - 서버 호스팅 시
    - Container 형식(도커, 쿠버네티스)
    - 왜 가상서버로? 만드는 것 용이, 쓰는 만큼 비용, 트래픽이 몰리면 자동으로 확장됨
  • CI/CD : 지속적인 통합/지속적인 배포
  • 설정

  • windows기능 linux용 하위시스템, 가상머신 ㅣ플랫폼 체크하기
  • 맥은 기본이 리눅스 커맨드 사용 가능할 것 같음. 설치하는게 다를 수 있음. 우분투 설치 예정

강의 내용

클라우드 서비스

  • 클라우드 컴퓨팅?

  • 필요한 만큼, 인터넷만 있으면 사용 가능하고, 사용한만큼 지불하는 대용량 서비스를 말한다.

  • 클라우드 스토리지 : 우리가 익숙한 네이버 마이박스, 구글 들아비 등

  • 클라우드 컴퓨팅 유형

  • 퍼블릭 : 공유 - 서비스하는 입장

  • 프라이빗 : 우리만 사용 - 오픈셋같은 클라우드 플랫폼 소프트웨어도 필요

  • 온프레미스 : 모든 장비도 갖고 있는 예전 유형

  • 하이브리드 : 프라이빗 + 퍼블릭 다 접목해서 사용할 수 있는 유형
    -> 목적에 따라 유형을 선택해서 사용

  • 서비스유형

  • Saas : 소프트웨어 또는 애플리케이션의 기능만 제공 -> 모든 것을 제공받는 것

  • PaaS : 주로 개발 환경과 관련한 서비스를 제공한다.(OS, DB, WAS, JDK)-> 공통은 빌려오고, 그 외만 설계

  • IaaS : 리소스를 서비스 형태로 제공/인프라, 라우터 구축 -> 재료만 이용하는 것

  • 하이퍼바이저 : 보다 효율적
  • 컨테이너 가상화 :
    • 도커(or 호버네티스 : 도커를 모아서 통합관리 축)는 컨테이너를 제어해주는 프로그램이고, 위의 각 컨테이너를 관리, OS가 필요없다.
    • 그러다보니 용량을 줄일 수 있음.
    • 단점 : 같은 운영체제만 사용할 수 있음(리눅스는 리눅스만! 그 환경을 맞춰줘야 함.)

클라우드 컴퓨팅?
하나의 컴퓨터에 가상머신을 쌓아 OS 별 앱을 실행했지만 OS까지 올려지며 과부하되는 한계!
따라서 컨테이너 어떤 요소가 제공되는지 따라 서비스 방식 달라짐 에 따른 가상의 컴퓨팅화를 통해 더 큰 서비스를 더 적은 인력, 자원으로 이용할 수 있음.


AWS(Amazon Web Service)란?

  • 아마존 닷컴에서 개발한 클라우드 컴퓨팅 플랫폼

  • 네트워킹 기반 가상 컴퓨터, 스토리지, 네트워크 인프라 등 다ㅑㅇ한 서비슬르 제공하고 있어 필요한 서비스로 조합하여 사용 가능하다.

  • 장점 ? 저렴한 비용, 속도 및 민첩성, 데이터센터 운영 및 유지 비용 감소

  • EC2?

  • 컴퓨팅의 핵심 EC2(Amazon Elastic Compute Cloud), 새로운 서버 인스턴스 확보, 신속한 컴퓨팅 설정
    -> 독립된 컴퓨터를 임대해주는 AWS의 대표 서비스

  • 설치과정
    -> AWS 로그인 -> 리전 선택 -> EC2 선택 -> OS선택 -> AMI 선택(우선 ubuntu 20.04) -> 인스턴스유형 : t2.micro->키페어 생성(RSA, .pem) -> 보안그룹 생성


연결 및 파일 업로드

  • AWS EC2 인스턴스 접속(Mac)

  • 키체인 등록 및 파일 다운로드 경로에서 커멘더 실행
  • AWS에서 퍼블릭 Ip 주소 가져오기 : 3.112.71.70
chmod 400 키페어이름.확장자
ssh -i 키페어이름.확장자 유저명@퍼블릭ip주소
  • 파일업로드 방법

  • 터미널에 아래 명령어 입력
scp -i 키페어명 파일명.확장자 유저명@EC2퍼블릭주소:/home/ubuntu(생성위치)
  • 파일 설치(docker, ubuntu, )

- ubuntu에 docker 설치

# Add Docker's official GPG key:
sudo apt-get update

sudo apt-get install ca-certificates curl gnupg

sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL [https://download.docker.com/linux/ubuntu/gpg](https://download.docker.com/linux/ubuntu/gpg) | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

sudo chmod a+r /etc/apt/keyrings/docker.gpg

# Add the repository to Apt sources:
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] [https://download.docker.com/linux/ubuntu](https://download.docker.com/linux/ubuntu) \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

sudo usermod -aG docker ubuntu

sudo curl [https://raw.githubusercontent.com/docker/docker-ce/master/components/cli/contrib/completion/bash/docker](https://raw.githubusercontent.com/docker/docker-ce/master/components/cli/contrib/completion/bash/docker) -o /etc/bash_completion.d/docker.sh

접속

  • 컨테이너 조회

  • 컨테이너 조회

  • EC2 접속 후 docker container ls

  • AWS DBeaver 연결(EC2 접속)

  • 순서 : 연결 추가 -> EC2 설정에 따른 DB 선택->server host(EC2 퍼블릭 주소), Port(EC2 포트 확인, 3306 기본포트), name 및 pw 입력

  • EC2 서버 설정 파일 수정(Mac)

  • chmod : 접근 권한 변경

  • u+x : 소유자에게 실행권한 추가

  • mvnw : 메이븐 배포시 설정

//키페어 있는 곳에서 EC2 연결
ssh -i 키페어이름.확장자 유저명@퍼블릭ip주소
//경로 이동 home/ubuntu/guestbook/src/main/resources 
//ls를 통해 nano application.properties 파일 확인 및 환경설정 변경
vi application.properties
//배포하고자 하는 파일로 이동 
cd guestbook
//메이븐 배포 환경설정
chmod u+x mvnw mvnw.cmd
//Maven/target Clean 및 build
./mvnw clean package

TCP/IP vs OSI


private IP, public IP => 개념 중요

  • Public IP : 인터넷에서 사용하는 ip주소
  • Private IP : 기업, 개인 내부망에서 사용하는 ip(인터넷 필요없는 경우 사용, 중복도 가능)
  • Private 서브넷

VPC, 서브넷, Ipv4?

  • 구분

  • VPC안에 내가 사용하려는 서브넷을 만든다(단, 서로 겹치면 안 된다.)

  • 서브넷은 무조건 VPC 안에 있어야 함.

  • 서브넷이 생성되어야 있어야 Ec2와 같은 것도 생성 가능

  • ip는 시스템의 주소라면, 그 구분을 위한 주소임.

  • Private 서브넷

  • 프라이빗 서브넷 연결하는 인스턴스 생성

  • 두 개가 무엇이 다른가???

  • 두번째 private으로 만든 것은 아래와 같이 인스턴스 연결을 클릭하면 연결할 수 없다고 뜸

  • 보안규칙에 해당 ip로 접속하는 것은 허가하도록 설정을 넣어줘야 함.

  • 그리고 키를 퍼블릭에 복사해서 넣어주기(접속할 수 있도록) -> 퍼블릭을 통해서 프라이빗에 접근하기(그림 참고)

//키가 있는 곳에서 커맨더 실행 -> 퍼블릭에 복사해서 넣어주기 
scp -i 키페어명 키페어명 유저명@svr1퍼블릭주소:/home/ubuntu              

//EC2 접속한 뒤 ubuntu 들어가서 복사된 키를 이용하여 Private 인스턴스로 접근
ssh -i 키페어이름.확장자 유저명@퍼블릭ip주소
chmod 400 키페어이름

//프라이빗 EC2접근
ssh -i 키페어명 ec2-user@svr2프라이빗주소

  • 완료 사진(이 새는 뭘까?)

0개의 댓글