본문 바로가기
  • 🦄 창민이 개발일지
서버

AWS 간단 정리

by 창민이 개발일지 2024. 4. 6.

  • 아마존(글로벌 최강 이커머스)의 클라우드 서비스
  • 클라우드란
    • 내가 직접 컴퓨터를 사서 프로그램을 돌리는 것이 아니라 인터넷을 통해 원격으로 외부 컴퓨터의 프로그램을 돌리는 서비스
    • 일반적으로 사용량(시간) 대비 비용을 냅니다.
  • 넷플릭스, 삼성, Shopify, 크래프톤, AMD 등 세계 굴지의 스타트업과 대기업들이 AWS의 고객

AWS에서 제공하는 서비스

  • 백엔드 서비스, 머신러닝 서비스, 고객 관리 서비스등 너무 많습니다.
  • 일반적으로 초기 스타트업이 쓰는 서비스는 한정 되어 있습니다.
    • 서버용 서비스: EC2, Lambda
    • 스토리지 서비스: S3
    • DB 서비스: RDS, DynamoDB

AWS 서비스 기본 단위: IaaS, PaaS, SaaS

IaaS(Infrastructure as a Service)

  • 인프라 서비스 뜻으로 정말 구축만 제공하는 서비스, 구축이외에 프로그램 설치나 보호등 내가 다해야 됩니다.
  • Ex) Ec2, Lambda
  • 예를 들어 EC2로 설명 드리면, EC2 인스턴스를 실행 후, 해당 인스턴스 안에 들어가 Flask 나 FastAPI를 실행 시키고, 네트워트나 포트를 직접 내가 열어 두고, 해당 서버에 잘 접속 할 수 있는 지 내가 다 해야됩니다.
  • PaaS, SaaS에 비해 가격 저렴 BUT 내가 다 해야됩니다.
  • 단점: 돈 많으면 PaaS, SaaS 쓰는 것이 좋습니다.
  • 장점: 커스텀은 용이

PaaS (Platform as a Service)

  • 약자는 위와 같지만, 나는 오히려 Package as a Service로 표현하는 게 이해하기 좋은 거 같습니다.
  • 참고로 Package는 간단히 설명하자면 추천서비스와 같이 이미 다른 개발자가 이미 만든 코딩(프로그램)을 package 단위로 다운받아 내 코드 안에 사용하는 것을 의미합니다.
  • Paas도 마찬가지로 내 서비스안에 이미 다른 개발자가 만든 서비스를 안에 넣는 서비스라고 생각하면 됩니다.
  • 네이버로 예를들면, 날씨 API, 지도 API 같은 걸 생각하면 됩니다.
  • Ex) AWS Personalize , s3, dynamodb,…
  • 단점: 비쌈

SaaS (Service as a Service)

  • 가장 높은 수준으로, 고객 관리 서비스 같이 아예 개발 없이 쓸 수 있는 서비스
  • Ex) AWS-쇼핑몰 서비스: https://aws.amazon.com/ko/retail/digital-commerce/
  • 단점: 비싼건 진짜 비쌈 (몇 천만원 짜리도 있다고 하네요…..)

서비스 설명

EC2

  • 하나의 컴퓨터 자체를 빌려주는 서비스
  • 제공은 운영체제 정도 빌려주는 서비스
  • 운영체제는 여러 가지가 있음: Ubuntu, CentOS, WindowServer, …
  • 보통 운영체제는 Ubuntu 사용
  • 해당 컴퓨터에 Spring, FastAPI, Flask 같은 백엔드 프레임워크 를 실행시켜 서버 운영

서버리스 란

  • 서버 없이 라는 의미로 EC2 처럼 컴퓨터안에 Spring 같이 프로그램을 실행 시키는 것이 아니라 외부에서 api ( ex api.function(인수) 처럼)를 실행 시키는 서비스라고 생각 하면 됩니다.
  • 해당 이름의 어원은 (내 생각이지만) 기존에는 서버는 무조건 백엔드 프레임워크를 사용해야되는 고정 관념을 부정하기 위한 의미로 쓰인거 같습니다.
  • 따라서 서버리스 서비스는 IaaS 서비스 보단 PaaS 서비스에 가깝습니다.
  • 좀 더 설명을 하자면 RDS(데이터베이스 서비스)의 경우 EC2 없이는 서비스를 운영할 수 없는 것과 달리 Dynamodb 같이 클라이언트 단에서 API 요청을 해서 정보를 가져올 수 있습니다. EX) 북플립
  • 서비스 : S3, DynamoDB, Lambda, …
  • 사실 AWS 상에서 서버리스의 가장 큰 특징은 시간이 아니라 API 호출에 따른 비용이 발생→ 유저가 많은 대기업에서는 오히려 비용이 많이 나올 수 있습니다.
  • → 유저가 적은 스타트업에서 자주 사용됩니다. 

Lambda

  • 코딩의 람다 함수 같이 백엔드 프레임워크 기반이 아닌 함수 기반으로 서버를 운영합니다. 
  • 서비리스 서비스
  • EC2 처럼 컴퓨터안에 Spring, FastAPI 같은 백엔드 프레임워크를 실행 시켜 서버를 운영하는 것이 아니라 파이썬에서 함수를 만들어 함수를 실행 시키는 것 같이, 오로지 함수 코드 만으로 서버를 운영
  • 실제 Lambda 서비스안에서 파이썬, Java 같은 코드로 함수를 작성할 수 있는 칸이 있습니다.
  • 기존 서버 코딩 구조

  • lambda 코딩 구조

  • lambda의 의도가 백엔드 프레임워크를 쓰지 않도록 한 의도 였지만, 지금은 비용이 싸서 사용하는 용도로 쓰인다. 보통은 백엔드 프레임워크를 람다 서비스로 변환해서 사용됩니다.
  • 하지만 호출에 의한 서비스가 아닌 실시간으로 운영 되어야 되는 서비스, ex) 결제 정산 처리, 탈퇴 이후 30일 지난 유저 데이터 처리 등 호출이 아닌 실시간으로 운영되어야 되는 서비스에는 적합하지 않습니다.→ 하지만 약간의 꼼수를 이용하면 가능하다고 한다네요
  • https://cumulus.tistory.com/11

Nosql 설명

  • 관계형 데이터 같이 테이블(csv) 형식이 아닌 JSON 형식의 데이터를 저장하는 형식

⇒ 이걸 관계형 데이터로 만들려면

hey anumber anoject

guy. 243. whoa_nuts

guy. 243. anarray_[1,2,…]

guy. 243. more_stuff

⇒ 중복 발생

⇒ 중복이 발생하지 않는 장점이 있음

⇒ but 데이터 무결성 안됨

→ 데이터 무결성이란 쉽게 설명하면 User 테이블에서 A 라는 user가 삭제 되면, User랑 관련 된 데이터(찜 목록, 결제 내역 등)는 자동으로 삭제되는 것을 의미 SQL에서는 이것을 cascade(폭포같이 물 줄기를 타고 처리 된다는 의미)라고 부른다.

⇒ 그래서 보통 User 데이터 나, 결제 처리 데이터 와 같은 데이터에서는 sql를 많이 사용하고 찜 목록 이나 메시지 데이터와 같은 사라져도 무결성이 보장 되지 않아도 되는 데이터는 nosql를 사용

DynamoDB

  • nosql 기반(JSON 형식) 데이터베이스 서버리스 서비스
  • 서버리스 이다 보니 서버 없이 클라이언트 단에서 API 요청으로 데이터 가져올 수 있습니다.
  • 하지만 User 와 같은 데이터 같은 민감한 정보는 해당 유저 이외에는 접근할 수 없도록 시스템상에서 설정할 수 있습니다.

S3

  • 쉽게 설명하면 SSD 서버라고 생각하면 될거 같습니다.
  • 주로 이미지 같은 비정형 데이터를 저장하는 용도로 쓰입니다.
  • 주로 어떻게 쓰이면 DB에 S3 데이터(이미지)주소를 저장하고 해당 주소로 스토리지 데이터를 가져오는 방식
  • 굳이 데이터베이스에 저장하지 않고 스토리지를 따로 쓰는 이유는 데이터베이스 하나의 레코드 데이터(테이블의 행 데이터, ex) A 유저의 데이터)에 이미지 같은 큰 데이터를 사용할 경우 다 저장할 수 없는 문제도 있고 데이터 하나하나가 크기 때문에 조회하는 게 느려지는 문제가 있기 때문에 해당 방식을 사용합니다. 

'서버' 카테고리의 다른 글

Git Stash 복구  (0) 2024.05.14
스프링 Data JPA 정리  (0) 2024.04.07
스프링 Data JPA  (0) 2023.05.17
스프링 부트와 JPA 활용  (0) 2023.05.12
Spring boot 란  (0) 2023.05.11