[Infra] 인프라 키워드 정리 Part 1(feat. Cloud Service, AWS, EC2)

서버 배포를 위해 알아야 할 이론에 대해 정리하기에 앞서, 내가 왜 인프라 공부를 시작하게 됐는지 정리해보려 한다.

 

📍 인프라 공부를 시작한 이유

  • 서버/백엔드 개발자가 갖춰야 하는 소양 중 하나임
  • 서버 배포 경험이 전무함
  • 관련 지식의 깊이가 얕음(배포, 무중단 배포, CI/CD, Docker 등 1부터 n까지 혼자 해본 적이 없음)

 

 우선 내가 인프라 공부를 시작한 이유는 애석하게도 서버 배포 경험이 전무하기 때문이다. 서버 배포, 배포 자동화 등은 서버 또는 백엔드 개발자가 되기 전 경험해봐야하는 부분들이라 생각한다. 따라서 인프라 공부를 통해 부족했던 부분들을 조금씩 채워나가며 경험까지 쌓아보려 한다. 조금 더 동기부여가 되지 않을까 싶어 인프라 스터디에도 참여하게 되었다!

 

📍 목표

  • 잇픽 프로젝트에 적용하기
  • 배포, 무중단 배포, CI/CD, Docker 등

 

 그럼 어떻게 경험을 쌓을 것인가? 우선 스터디에서 정해준 커리큘럼대로 배포, 무중단 배포, Docker까지 차례대로 실습을 하고, 현재 진행 중인 프로젝트에 이를 적용 및 활용해보려 한다. 실습 -> 실제 프로젝트 적용 과정을 통해 해당 지식이 내 것이 될 수 있게 학습하고 싶다.

 

진행 중인 프로젝트

https://jihyun-devstory.tistory.com/40

 

[EatPick] EatPick 개발 도입기

1. '오늘 뭐 먹지?'를 개발하게 된 계기 4학년 1학기 캡스톤디자인 프로젝트를 시작하기에 앞서 어떤 서비스를 만들지에 대해 고민했다. 현재 흔하게 존재하지 않으면서도, 사람들의 일상 속 고

jihyun-devstory.tistory.com

 

 


 

 서론이 길었다. 이번 블로깅에서는 서버 배포 실습을 하기에 앞서, 관련 키워드들을 정리해보려 한다.

 

1. Cloud Service

(1) IaaS(Infrastructure as a Service)

what-is-iaas_iaas-paas-saas.jpg
출처 - Microsoft

 

  •  정의
    • 가상화된 기본 인프라 자원(서버, 스토리지, 네트워크 등)을 제공하는 서비스 모델
    • IT 리소스를 수요 맞게 유연하게 스케일 업/다운할 수 있음
    • 새 애플리케이션을 빠르게 프로비저닝하고 기본 인프라의 안정을 높이는데 도움을 줌
      • 프로비저닝  : IT 인프라를 생성하고 설정하는 프로세스, 사용자 시스템이 리소스와 데이터를 사용할 수 있도록 하는 것
      • ex - 서버 프로비저닝, 리소스 프로비저닝, OS 프로비저닝
  • 예시
    • AWS, Microsoft Azure, Google Cloud

 

(2) PaaS(Platform as a Service)

스크린샷 2024-12-18 오후 3.04.13.png
출처 - Microsoft

 

  • 정의
    • IaaS에서 제공하는 인프라 위에 개발, 배포, 운영을 지원하는 플랫폼을 제공하는 서비스 모델
    • 빌드, 테스트, 배포, 관리, 업데이트의 완전한 웹 애플리케이션 수명 주기를 지원
  • 예시
    • AWS Elastic Beanstalk, Microsoft Azure, Google App Engine, SAP Cloud Platform

 

(3) SaaS(Software as a Service)

스크린샷 2024-12-18 오후 3.01.40.png
출처 - Microsoft

 

  • 정의
    • 클라우드에서 호스팅 되는 소프트웨어 애플리케이션을 제공하는 서비스 모델
  • 예시
    • Gmail, Microsoft Office 365, Netflix

 

(4) CaaS(Container as a Service)

  • 정의
    • 클라우드에서 호스팅 되는 소프트웨어 애플리케이션을 제공하는 서비스 모델
  • 예시
    • GKE(Google Kubernetes Engine)

 

각 서비스의 장/단점

Zpw-v4ZOiAkbLm9ARSl68tGaZFYsFsz1ABwRbl8Cj_ozj12jCTPmgVGKBARz3Xwum1CUsMQ7Hog.jpeg
출처 - Google Cloud

 

  장점 단점
IaaS - 인프라에 대한 제어 수준이 가장 높음
- 필요에 따라 확장 가능
- 단일 장애점이 없어 안정성이 높은 편임
- 초기 자본 지출 감소(사용한만큼만 지불)
- 프로비저닝 지연과 리소스 낭비 감소
- 개발 및 TTM(Time To Market) 가속화
- 자체 데이터 보안 및 복구에 대한 책임
- 직접 구성하고 유지보수해야 함
- 클라우드 기반 인프라에서 기존 애플리케이션을 보호하기 어려움
PaaS - 완전하고 사용하기 쉬운 개발 플랫폼에 즉시 액세스 가능
- 유지보수 및 인프라 보안을 책임지는 클라우드 서비스 제공업체
- 모든 기기에서 모든 인터넷 연결을 통해 사용 가능
- 필요에 따라 확장 가능
- 애플리케이션 스택이 가장 관련성 높은 구성 요소로 제한될 수 있음
- 클라우드 서비스 제공업체에 따라 공급업체 종속이 문제가 될 수 있음
- 운영 및 전체 인프라에 대한 낮은 제어 수준
- 제한된 맞춤 설정
SaaS - 간편하게 설정하고 사용 시작
- 제공 업체가 하드웨어부터 소프트웨어까지 모든 것을 유지 및 관리
- 모든 기기에서 모든 인터넷 연결을 통해 소프트웨어에 액세스 가능
- 인프라 또는 보안 제어 통제 불가능
- 기존 도구 및 애플리케이션과의 통합 문제
- 클라우드 서비스 제공업체에 따라 공급업체 종속이 문제가 될 수 있음
- 맞춤 설정이 제한적이거나 없음
CaaS - 마이크로서비스 실행, 관리, 확장에 이상적
- 개발 간소화로 TTM 단축
- 네트워크 및 애플리케이션 구성요소의 제어 및 구성 세분화
- 하이브리드 클라우드 및 멀티 클라우드와 환경 간 워크로드 이동성 증가
- 성능 모니터링 및 컨테이너 조정 기본 제공
- 클라우드 서비스 제공업체에 따라 일부 CaaS 솔루션에 제공되는 언어 지원이 제한적임
- CaaS를 사용할 경우, OS와 동일한 커널을 공유하므로 컨테이너 보안 위험이 증가할 수 잇음

출처 - Google Cloud

 

(5) Serverless

  • 정의
    • 개발자가 서버나 백엔드 인프라를 프로비저닝하거나 관리하지 않고도 애플리케이션 코드를 빌드하고 실행할 수 있는 애플리케이션 개발 및 실행 모델
    • '서버가 없음'을 의미하지 않음. 즉, 개발자는 서버를 보거나 관리하지 않으며 서버와 어떤 방식으로든 상호 작용하지 않음.
    • 프론트엔드 애플리케이션 코드와 비즈니스 로직을 작성한 후, CSP(클라우드 서비스 제공업체)에서 관리하는 컨테이너에 배포하기만 하면 됨.
  • 예시
    • AWS Lambda, AWS Step Functions

 


 

2. AWS

다운로드.png

 

 AWS는 아마존닷컴의 클라우드 컴퓨팅 서비스이다. 앞서 살펴보았던 IaaS의 대표적인 예시 중 하나이다. AWS는 컴퓨팅, 스토리지, 데이터베이스와 같은 인프라 기술부터 기계 학습 및 인공지능, 데이터 레이크 및 분석, 사물 인터넷 등의 새로운 기술까지 다양한 분야에서 활용할 수 있는 기능을 제공하고 있다. 

 

그렇다면 서버 배포 시, 왜 AWS를 왜 사용해야 하는걸까?

 

구글에 따르면 아래와 같은 이유를 찾아볼 수 있다. 일단 직접 사용해봐야 체감할 수 있을 것 같다.

  • 서버리스 아키텍처, 컨테이너 서비스, 관리형 데이터베이스 서비스 등을 포함한 광범위한 서비스를 제공한다.
  • 이를 통해 개발자는 인프라 관리에 드는 시간과 비용을 크게 줄일 수 있다.
  • 별도의 물리적 서버를 구축할 필요가 없다.

 


 

3. EC2

다운로드.png
출처 - AWS

 

 Amazon EC2(Amazon Elastic Compute Cloud)는 AWS 클라우드의 가상 서버로, 온디맨드 확장 가능 컴퓨팅 용량을 제공한다. Amazon EC2를 사용하면 하드웨어 비용이 절감되므로 애플리케이션을 더욱 빠르게 개발하고, 배포하는 것이 가능하다. 또한 원하는 수의 가상 서버를 구축하고, 보안 및 네트워킹을 구성하며 스토리지를 관리할 수 있다. 용량 스케일 업 또는 다운을 통해 사용량에 따른 작업을 일괄 처리할 수 있다. 해당 기능을 통해 우리는 서버를 배포하는 것이 가능하다.

온디맨드 : 사용자가 필요할 때 즉시 자원을 요청하고, 그만큼의 비용을 지불하는 방식의 클라우드 컴퓨팅 모델

스토리지 : 서버 용량

 

 

(1) Amazon EC2의 기능

a. 인스턴스 : 가상 서버

b. Amazon Machine Images(AMIs) : 서버에 필요한 구성 요소(운영체제와 추가 소프트웨어 포함)를 패키징하는 인스턴스용 사전 구성 템플릿

c. 인스턴스 타입 : 인스턴스의 다양한 CPU, 메모리, 스토리지, 네트워킹 용량 및 그래픽 하드웨어 구성

d. Amazon EBS 볼륨 : Amazon EBS(Elastic Block Store)를 사용하는 데이터에 대한 영구 스토리지 볼륨

볼륨 : 스토리지에서 사용하는 Dataset의 단위

e. 인스턴스 스토어 볼륨 : 인스턴스를 중단, 최대 절전 모드로 전환 또는 종료할 때 삭제되는 임시 데이터용 스토리지 볼륨

f. 키 페어 : 인스턴스에 대한 보안 로그인 정보. AWS는 퍼블릭 키를 저장하고, 사용자는 프라이빗 키를 안전한 장소에 저장한다.

g. 보안 그룹 : 인스턴스에 도달할 수 있는 프로토콜, 포트 및 소스 IP 범위와 인스턴스가 연결할 수 있는 대상 IP 범위를 지정할 수 있는 가상 방화벽

 

 

(2) EC2 인스턴스

 

 

ec2-instances.png
출처 - AWS

 

 앞서 살펴보았듯이 Amazon EC2 인스턴스는 AWS 클라우드 환경의 가상 서버이다. 인스턴스를 처음 시작할 때부터 삭제할 때까지 EC2를 활용해 인스턴스를 완전히 제어할 수 있다. Amazon EC2는 다양한 인스턴스 유형을 제공하는데, 애플리케이션을 실행하는데 필요한 컴퓨팅 리소스, 메모리, 스토리지 미치 네트워크 성능을 제공하는 인스턴스 유형을 선택할 수 있다.

 

 

이번 블로깅에서는 클라우드 서비스와 AWS에 대해서 알아보았다. 다음 블로깅에서는 Nginx, Linux, SSH에 대해 알아볼 예정이다.

 

참고 자료

https://azure.microsoft.com/ko-kr/resources/cloud-computing-dictionary/what-is-iaas

 

IaaS란? 서비스 제공 인프라(Infrastructure as a Service) | Microsoft Azure

IaaS란? IaaS(Infrastructure as a Service) 클라우드 컴퓨팅에 대해 알아보세요. 온라인으로 즉각적인 컴퓨팅 인프라를 사용하는 방식의 장점을 알아보세요.

azure.microsoft.com

 

https://cloud.google.com/learn/paas-vs-iaas-vs-saas?hl=ko

 

https://cloud.google.com/learn/paas-vs-iaas-vs-saas?hl=ko

 

cloud.google.com

 

https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/concepts.html

 

Amazon EC2란 무엇인가요? - Amazon Elastic Compute Cloud

이 페이지에 작업이 필요하다는 점을 알려 주셔서 감사합니다. 실망시켜 드려 죄송합니다. 잠깐 시간을 내어 설명서를 향상시킬 수 있는 방법에 대해 말씀해 주십시오.

docs.aws.amazon.com

 

https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/Instances.html

 

Amazon EC2 인스턴스 - Amazon Elastic Compute Cloud

이 페이지에 작업이 필요하다는 점을 알려 주셔서 감사합니다. 실망시켜 드려 죄송합니다. 잠깐 시간을 내어 설명서를 향상시킬 수 있는 방법에 대해 말씀해 주십시오.

docs.aws.amazon.com