Super Kawaii Cute Cat Kaoani 스프링 부트와 AWS로 혼자 구현하는 웹 서비스(6)

스프링 부트와 AWS로 혼자 구현하는 웹 서비스(6)

2024. 1. 22. 01:39
728x90
SMALL

📌 AWS 서버 환경 - AWS EC2

⚡ AWS란?

✔ AWS : Amazon Web Service

  • 이번 장에서는 AWS 클라우드 서비스를 이용해 서버 배포를 할 것임
  • 외부에서 본인이 만든 서비스에 접근하려면 24시간 작동하는 서버가 필수임
    • 집에 PC를 24시간 구동
    • 호스팅 서비스를 이용
    • 클라우드 서비스를 이용
  • 일반적으로 호스팅 서비스나 집 PC를 이용하는 것이 비용적으로 저렴함
    • 특정 시간에만 트래픽이 몰린다면 유동적으로 사양을 늘릴 수 있는 클라우드가 유리
  • 클라우드 서비스 : 인터넷(클라우드)을 통해 서버, 스토리지(파일 저장소), 데이터베이스, 네트워크, 소프트웨어, 모니터링 등의 컴퓨팅 서비스를 제공하는 것
    • 단순히 물리 장비를 대여하는 것이 아님
  • AWS의 EC2는 서버 장비를 대여하는 것이지만, 실제로는 그 안의 로그 관리, 모니터링, 하드웨어 교체, 네트워크 관리 등을 기본적으로 지원하고 있음!
    • Infrastructure as a Service(laaS, 아이아스, 이에스)
      • 기존 물리 장비를 미들웨어와 함께 묶어둔 추상화 서비스
      • 가상 머신, 스토리지, 네트워크, 운영체제 등의 IT 인프라를 대여해 주는 서비스
      • AWS의 EC2, S3 등
    • Platform as a Service(PaaS, 파스)
      • 앞에서 언급한 laaS에서 한 번 더 추상화한 서비스
      • 한 번 더 추상화했기 때문에 많은 기능이 자동화 되어 있음
      • AWS의 Beanstalk(빈스톡), Heroku(헤로쿠) 등
    • Software as a Service(Saas, 사스)
      • 소프트웨어 서비스
      • 구글 드라이브, 드랍박스, 와탭 등

 

✔ 우리는 AWS를 사용

  • 첫 가입 시 1년간 대부분 서비스 무료
    • 서비스마다 제한이 있긴 함
  • 클라우드에서는 기본적으로 지원하는 기능(모니터링, 로그관리, 백업, 복구, 클러스터링 등등)이 많아 개인이나 소규모일 때 개발에 좀 더 집중 가능
  • 많은 기업이 AWS로 이전 중이기 때문에 이직할 때 AWS 사용 경험은 도움이 됨
    • 국내에서는 AWS 점유율이 압도적
  • 사용자가 많아 국내 자료와 커뮤니티가 활성화되어 있음

 

 

✔ AWS에서 IaaS 사용

  • Paas서비스인 빈스톡을 사용하면 작업이 간소화되지만, 프리티어로 무중단 배포가 불가능
  • 배포할 때마다 서버가 다운되면 제대로 된 서비스를 만들 수 없으니 무중단 배포는 필수이고 빈스톡은 사용할 수 없음
  • AWS 초보자는 직접 하나씩 다 다뤄보는 것이 공부할 때 도움이 됨

 

 

⚡ AWS 회원 가입

Master 혹은 Visa카드 필요

  • AWS 공식 사이트로 이동한 뒤 무료 계정 만들기
  • 신규로 생성할 AWS 계정 정보 등록
  • 무료 기본 플랜 선택

 

 

⚡ EC2 인스턴스 생성

EC2(Elastic Compute Cloud) : AWS에서 제공하는 성능, 용량 등을 유동적으로 사용할 수 있는 서버

  • AWS에서 리눅스 서버 혹은 윈도우 서버를 사용한다고 하면 EC2를 사용하는 것임
  • 무료로 제공하는 프리티어 플랜에서는 제한이 있음
    • 사양이 t2.micro만 가능
      • vCPU(가상 CPU) 1 Core, 메모리 1GB 사양
      • 보통 vCPU는 물리 CPU 사양의 절반 정도의 성능을 가짐
  • 월 750시간의 제한이 있음(초과시 비용 부담)
    • 24*31 = 744
    • 1대의 t2.micro만 사용한다면 24시간 사용 가능

 

리전이란?

  • AWS의 서비스가 구동될 지역
  • AWS는 도시별로 클라우드 센터를 지어 해당 센터에서 구축된 가상머신들을 사용할 수 있음

 

 

✔ 본인의 리전이 서울로 되어있지 않다면 서울로 변경

 검색창에 EC2 검색
 인스턴트 시작 버튼 클릭(인스턴스 : EC2서비스에 생성된 가상 머신)

  • AMI(Amazon Machine Image, 아마존 머신 이미지)를 선택
    • AMI : EC2 인스턴스를 시작하는 데 필요한 정보를 이미지로 만들어 둔 것
    • 인스턴스 : 가상 머신에 운영체제 등을 설치할 수 있게 구워 넣은 이미지

 태그 등록 -> 웹 콘솔에서 표기될 태그인 Name 태그 등록

  • EC2의 이름을 붙인다고 생각(페이스북, 인스타그램 등)

 Amazon Linux AMI 선택

    • 아마존 리눅스 2 대신 1을 선택한 이유는 아직 국내 자료가 리눅스 1이 더 많기 때문
    • 보통 센토스 6버전으로 진행되는 자료들은 1에서 모두 사용 가능
    • 2는 센토스 7버전 자료들을 그대로 사용가능
    • 굳이 센토스 AMI를 사용하지 않고 아마존 리눅스 AMI를 사용하는 이유
      • 아마존이 개발하고 있기 때문에 지원받기 쉬움
      • 레드햇 베이스이므로 레드햇 계열의 배포판을 많이 다뤄본 사람일수록 문제없이 사용 가능
      • AWS의 각종 서비스와의 상성이 좋음
      • Amazon 독자적인 개발 리포지터리를 사용하고 있어 yum이 매우 빠름

 인스턴스 유형은 프리티어로 표기된 t2.micro 선택

  • t2 : 요금 타입 -> T시리즈 (t3 등등)
  • micro : 사양
  • 다른 서비스와 달리 크레딧이라는 일종의 CPU를 사용할 수 있는 포인트 개념이 있음
    • 인스턴스 크기에 따라 정해진 비율로 CPU 크레딧을 계속 받게 되며, 사용하지 않을 때는 크레딧을 축적하고, 사용할 때 이 크레딧 사용
    • 정해진 사양보다 더 높은 트래픽이 오면 크레딧을 좀 더 적극적으로 사용하면서 트래픽을 처리하지만, 크레딧이 모두 사용되면 더이상 EC2를 사용할 수 없음
    • 트래픽이 높은 서비스들은 T 시리즈를 쓰지 않고 다른 시리즈를 사용하기도 함
  •  

 

 인스턴스로 접근하기 위해서는 pem키(비밀키)가 필요함

  • 마스터키이며 유출되면 안됨

 네트워크 세팅

  • vpc, 서브넷, 퍼블릭 IP 자동 할당은 그냥 둠
  • 보안 그룹 이름, 설명 작성
    • 보안 그룹 : 방화벽
      • 서버로 80포트 외에는 허용하지 않는다는 역할을 하는 방화벽이 AWS에서는 보안그룹으로 사용
    • 자신의 집 IP를 기본적으로 추가하는 것이 안전
      • 집 외에서 접속할 때는 해당 장소의 IP를 다시 SSH 규칙에 추가하는 것이 안전
  •  

 스토리지는 기본 값인 8GB를 30GB로 설정

 

✔ 인스턴스 생성 -> 인스턴스 ID 클릭

  • IP와 도메인이 할당된 것을 알 수 있음
  • 인스턴스도 하나의 서버이기 때문에 IP가 존재함
    • 인스턴스 생성 시에 항상 새 IP를 할당하는데, 한가지 조건이 더 있음
    • 같은 인스턴스를 중지하고 다시 시작할 때도 새 IP가 할당됨
    • 인스턴스의 IP가 매번 변경되지 않고 고정 IP를 가지게 해야 함 : EIP할당
  •  

 왼쪽 카테고리에서 탄력적 IP 클릭

 

 주소가 없으므로 새주소할당 버튼 클릭

  •  방금 생성한 탄력적 IP와 방금 생성한 EC2주소를 연결
  •  주소 연결을 위해 생성한 EC2 이름과 IP를 선택하고 연결버튼 클릭
  • 설정한 후 인스턴스 정보를 다시 조회하여 퍼블릭, 탄력적 IP가 잘 연결되어 있는지 확인
  • 탄력적 IP는 생성하고 EC2 서버에 바로 연결하지 않으면 비용이 발생

 

 

 

EC2 서버에 접속하기 (맥북)

 

 pem 키파일이 있는 곳에 가서 권한 변경
chmod 600 'pem 키 이름'

  • 원래 ssh -i pem 'pem 키 위치' 'EIP 주소' 를 입력하지만
    config파일을 통해 쉽게 접속하도록 함

pem 파일~/.ssh/로 복사
cp pem파일 ~/.ssh/


cd ~/.ssh/
ll

-> 복사가 잘 되었는지 확인

 

✔ 권한 변경
chmod 600 ~/.ssh/pem키파일

 

 ~/.ssh에 config파일 생성
vim ~/.ssh/config

 

 i를 입력하고 입력모드로 전환한뒤 메시지 적어줌

 Host 본인이 원하는 서비스명
     HostName ec2의 탄력적 IP 주소
     User ec2-user
     IdentityFile ~/.ssh/pem키 이름
  • esc
  • :wq 저장

✔ 권한 변경
chmod 700 ~/.ssh/config

 

!!!! EC2 접속 !!!!

ssh config에 등록한 서비스명

 

반응형

 

⚡ 아마존 리눅스 1 서버 생성 시 꼭 해야 할 설정들

자바 17 설치

내 gradle 자바 버전과 일치하는 버전을 깔아야 함!

타임존 변경

  • EC2 서버의 기본 타임존은 UTC
  • 세계 표준 시간으로 한국의 시간대가 아님
  • 서버에서 수행되는 Java 애플리케이션에서 생성되는 시간도 모두 9시간씩 차이가 나기 때문에 수정해야함
$ sudo rm /etc/localtime
$ sudo ln -s /usr/share/zoneinfo/Asia/Seoul /etc/localtime

 

Hostname 변경

  • 여러 서버를 관리 중일 경우 IP만으로 어떤 서비스의 서버인지 확인이 어려움
  • 어느 서비스인지 표현하기 위해 Hostname 변경

sudo vim /etc/sysconfig/network

  •  hostname = ~ 설정
  • 호스트 주소를 찾을 때 가장 먼저 검색해 보는 /etc/hosts에 변경한 hostname을 등록

 

sudo vim /etc/hosts

  •  맨 아래줄에


127.0.0.1 HOSTNAME 추가

 

 

  • 이는 아직 80포트로 실행된 서비스가 없음을 의미
  • curl 호스트 이름으로 실행은 잘 되었음을 의미

 

 

스프링 부트와 AWS로 혼자 구현하는 웹 서비스_이동욱 지음 책을 읽고 정리하는 글입니다

 

 

 

 

 

 


PREV

 

스프링 부트와 AWS로 혼자 구현하는 웹 서비스(5)

📌 스프링 시큐리티와 OAuth 2.0으로 로그인 기능 구현하기 ✔ 스프링 시큐리티 : 막강한 인증과 인가 기능을 가진 프레임워크 스프링 기반의 애플리케이션에서는 보안을 위한 표준 ⚡ 구글 서비

nyeroni.tistory.com

NEXT

 

스프링 부트와 AWS로 혼자 구현하는 웹 서비스(7)

📌 AWS에 데이터베이스 환경을 만들기 - AWS RDS 웹 서비스 백엔드에서는 코드 작성만큼 중요한 것이 데이터베이스를 다루는 일임 직접 데이터베이스를 설치하지 않고 AWS에서 제공하는 관리형 서

nyeroni.tistory.com

 

728x90
LIST

BELATED ARTICLES

more