πŸŽ‰ berenickt λΈ”λ‘œκ·Έμ— 온 κ±Έ ν™˜μ˜ν•©λ‹ˆλ‹€. πŸŽ‰
Back
NestJs
44-Deploy

1. AWS

1.1 EC2

EC2(ELASTIC COMPUTE CLOUD)λŠ” AWSμ—μ„œ μ œκ³΅ν•˜λŠ” ν΄λΌμš°λ“œ 기반 가상 μ„œλ²„λ‘œ, μ‚¬μš©μžκ°€ ν•„μš”λ‘œ ν•˜λŠ” μ»΄ν“¨νŒ… λ¦¬μ†ŒμŠ€λ₯Ό 탄λ ₯적 으둜 μ œκ³΅ν•˜λŠ” μ„œλΉ„μŠ€

  • λ‹€μ–‘ν•œ μΈμŠ€ν„΄μŠ€ μœ ν˜•: 일반 λͺ©μ , μ»΄ν“¨νŒ… μ΅œμ ν™”, λ©”λͺ¨λ¦¬ μ΅œμ ν™” λ“± λ‹€μ–‘ν•œ μš©λ„μ˜ μΈμŠ€ν„΄μŠ€ 제곡.
  • ν™•μž₯μ„±: μˆ˜μš”μ— 따라 μΈμŠ€ν„΄μŠ€ 수λ₯Ό λŠ˜λ¦¬κ±°λ‚˜ 쀄일 수 μžˆμ–΄ λΉ„μš© 효율적 운영 κ°€λŠ₯.
  • μ œμ–΄ 및 관리: 운영 체제, λ„€νŠΈμ›Œν¬ μ„€μ •, λ³΄μ•ˆ λ“± μ„œλ²„ ν™˜κ²½μ„ μ„ΈλΆ€μ μœΌλ‘œ ꡬ성 κ°€λŠ₯

1.2 RDS

RDS(Relational Database Service)λŠ” ν΄λΌμš°λ“œμ—μ„œ κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό μ†μ‰½κ²Œ μ„€μ •, 운영 및 ν™•μž₯ν•  수 μžˆλ„λ‘ μ§€μ›ν•˜λŠ” κ΄€λ¦¬ν˜• μ„œλΉ„μŠ€

  • 지원 λ°μ΄ν„°λ² μ΄μŠ€ μ—”μ§„: Amazon Aurora, PostgreSQL, MySQL, MariaDB, Oracle Database, SQL Server
  • μžλ™ν™”λœ 관리: λ°±μ—…, 패치, 볡ꡬ λ“± λ°μ΄ν„°λ² μ΄μŠ€ 관리 μž‘μ—… μžλ™ν™”.
  • κ³ κ°€μš©μ„± 및 ν™•μž₯μ„±: λ©€ν‹° AZ 배포 및 읽기 λ³΅μ œλ³Έμ„ 톡해 높은 κ°€μš©μ„±κ³Ό 읽기 μ„±λŠ₯ ν–₯상.
  • λ³΄μ•ˆ: VPC λ‚΄μ—μ„œμ˜ 격리, IAMκ³Ό ν†΅ν•©λœ μ•‘μ„ΈμŠ€ μ œμ–΄, 데이터 μ•”ν˜Έν™” 지원

1.3 VPC

\VPC(Virtual Private CloudλŠ” AWS ν΄λΌμš°λ“œ 내에 μ‚¬μš©μžκ°€ μ •μ˜ν•œ 가상 λ„€νŠΈμ›Œν¬λ₯Ό μƒμ„±ν•˜μ—¬ λ¦¬μ†ŒμŠ€λ₯Ό 배포할 수 있게 ν•΄μ£ΌλŠ” μ„œλΉ„μŠ€

  • λ„€νŠΈμ›Œν¬ ꡬ성 μ œμ–΄: IP μ£Όμ†Œ λ²”μœ„, μ„œλΈŒλ„·, λΌμš°νŒ… ν…Œμ΄λΈ” 등을 직접 μ„€μ • κ°€λŠ₯.
  • λ³΄μ•ˆ μ œμ–΄: λ³΄μ•ˆ κ·Έλ£Ήκ³Ό λ„€νŠΈμ›Œν¬ ACL을 톡해 μΈλ°”μš΄λ“œ 및 μ•„μ›ƒλ°”μš΄λ“œ νŠΈλž˜ν”½ μ œμ–΄.
  • ν•˜μ΄λΈŒλ¦¬λ“œ μ—°κ²°: μ˜¨ν”„λ ˆλ―ΈμŠ€ λ„€νŠΈμ›Œν¬μ™€ VPNμ΄λ‚˜ Direct Connectλ₯Ό 톡해 μ—°κ²° κ°€λŠ₯

1.4 ELB

ELB(Elastic Load Balancer)λŠ” λ“€μ–΄μ˜€λŠ” νŠΈλž˜ν”½μ„ μ—¬λŸ¬ λŒ€μƒ(e.g. EC2 μΈμŠ€ν„΄μŠ€)으둜 μžλ™ λΆ„μ‚°μ‹œμΌœ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ κ°€μš©μ„±κ³Ό ν™•μž₯성을 ν–₯μƒμ‹œν‚€λŠ” μ„œλΉ„μŠ€

  • Application Load Balancer: HTTP/HTTPS νŠΈλž˜ν”½μ— λŒ€ν•œ λ ˆμ΄μ–΄ 7 λ‘œλ“œ λ°ΈλŸ°μ‹±.
  • Network Load Balancer: κ³ μ„±λŠ₯ TCP νŠΈλž˜ν”½μ— λŒ€ν•œ λ ˆμ΄μ–΄ 4 λ‘œλ“œ λ°ΈλŸ°μ‹±.
  • Gateway Load Balancer: μ„œλ“œνŒŒν‹° 가상 μ–΄ν”ŒλΌμ΄μ–ΈμŠ€μ™€μ˜ 톡합을 μœ„ν•œ λ‘œλ“œ λ°ΈλŸ°μ‹±.
  • μžλ™ ν™•μž₯ 지원: νŠΈλž˜ν”½ 변화에 λ”°λ₯Έ μžλ™ ν™•μž₯ 및 μΆ•μ†Œ.
  • ν—¬μŠ€ 체크: λŒ€μƒμ˜ μƒνƒœλ₯Ό λͺ¨λ‹ˆν„°λ§ν•˜μ—¬ 비정상적인 μΈμŠ€ν„΄μŠ€λ₯Ό μžλ™μœΌλ‘œ μ œμ™Έ

1.5 Route 53

Route 53은 ν™•μž₯μ„±κ³Ό κ°€μš©μ„±μ΄ 높은 ν΄λΌμš°λ“œ DNS(도메인 λ„€μž„ μ‹œμŠ€ν…œ) μ›Ή μ„œλΉ„μŠ€

  • 도메인 등둝: μƒˆλ‘œμš΄ 도메인 이름 등둝 및 관리.
  • DNS λΌμš°νŒ…: μ§€μ—° μ‹œκ°„ 기반, κ°€μ€‘μΉ˜ 기반, 지리 μœ„μΉ˜ 기반 λ“± λ‹€μ–‘ν•œ λΌμš°νŒ… μ •μ±… 지원.
  • ν—¬μŠ€ 체크 및 λͺ¨λ‹ˆν„°λ§: μ—”λ“œν¬μΈνŠΈμ˜ κ°€μš©μ„±μ„ ν™•μΈν•˜κ³  비정상 μ‹œ νŠΈλž˜ν”½μ„ λŒ€μ²΄ λ¦¬μ†ŒμŠ€λ‘œ λΌμš°νŒ…

1.6 EB

Elastic Beanstalk(EB)λŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 배포λ₯Ό λ‹¨μˆœν™”ν•˜λŠ” κ΄€λ¦¬ν˜• μ„œλΉ„μŠ€λ‘œ, κ°œλ°œμžλŠ” μ½”λ“œλ§Œ μ—…λ‘œλ“œν•˜λ©΄ μžλ™μœΌλ‘œ 인프라 ν”„λ‘œλΉ„μ €λ‹, λ‘œλ“œ λ°ΈλŸ°μ‹±, μŠ€μΌ€μΌλ§ 등을 처리

  • μžλ™ν™”λœ 관리: μ„œλ²„ μ„€μ •, ν™˜κ²½ ꡬ성, λͺ¨λ‹ˆν„°λ§ 등을 μžλ™μœΌλ‘œ 처리.
  • μ»€μŠ€ν„°λ§ˆμ΄μ§• κ°€λŠ₯: ν•„μš”μ— 따라 ꡬ성 섀정을 μ„ΈλΆ€μ μœΌλ‘œ μ‘°μ • κ°€λŠ₯.
  • 배포 μ˜΅μ…˜: 둀링 μ—…λ°μ΄νŠΈ, 블루/κ·Έλ¦° 배포 λ“± λ‹€μ–‘ν•œ 배포 μ „λž΅ 지원

1.7 Lightsail

Lightsail은 μ†Œκ·œλͺ¨ ν”„λ‘œμ νŠΈλ‚˜ κ°„λ‹¨ν•œ μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ λΉ λ₯΄κ²Œ μ‹œμž‘ν•  수 μžˆλ„λ‘ λ„μ™€μ£ΌλŠ” μ„œλΉ„μŠ€λ‘œ, 가상 μ„œλ²„, μŠ€ν† λ¦¬μ§€, 데이터 전솑 등을 ν•˜λ‚˜μ˜ νŒ¨ν‚€μ§€λ‘œ 제곡

  • κ°„λ‹¨ν•œ μ‚¬μš©λ²•: λ³΅μž‘ν•œ μ„€μ • 없이 λͺ‡ 번의 클릭만으둜 λ¦¬μ†ŒμŠ€ 생성 κ°€λŠ₯.
  • 예츑 κ°€λŠ₯ν•œ λΉ„μš©: 월별 κ³ μ • μš”κΈˆμ œλ‘œ λΉ„μš© 관리 용이.
  • 사전 κ΅¬μ„±λœ ν…œν”Œλ¦Ώ: WordPress, LAMP, MEAN λ“± 인기 μžˆλŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μŠ€νƒ 제곡

1.8 IAM

IAM(Identity Access Management)은 AWS λ¦¬μ†ŒμŠ€μ— λŒ€ν•œ μ•‘μ„ΈμŠ€λ₯Ό μ•ˆμ „ν•˜κ²Œ μ œμ–΄ν•  수 μžˆλ„λ‘ ν•˜λŠ” μ„œλΉ„μŠ€λ‘œ, μ‚¬μš©μž 및 그룹의 κΆŒν•œμ„ 관리

  • μ‚¬μš©μž 및 κ·Έλ£Ή 관리: AWS 계정 λ‚΄μ—μ„œ κ°œλ³„ μ‚¬μš©μž 생성 및 κ·Έλ£Ήν™”.
  • κΆŒν•œ μ œμ–΄: 세뢀적인 κΆŒν•œ 정책을 톡해 λ¦¬μ†ŒμŠ€μ— λŒ€ν•œ μ ‘κ·Ό μ œμ–΄.
  • 닀단계 인증(MFA): 좔가적인 λ³΄μ•ˆ 계측을 μœ„ν•œ MFA μ„€μ • κ°€λŠ₯

1.9 S3

S3(Simple Storage Service)λŠ” ν™•μž₯성이 λ›°μ–΄λ‚œ 객체 μŠ€ν† λ¦¬μ§€ μ„œλΉ„μŠ€λ‘œ, λŒ€μš©λŸ‰ 데이터λ₯Ό μ•ˆμ „ν•˜κ³  μ €λ ΄ν•˜κ²Œ μ €μž₯ 및 검색 κ°€λŠ₯

  • 높은 내ꡬ성 및 κ°€μš©μ„±: 데이터λ₯Ό μ—¬λŸ¬ μ‹œμ„€μ— 쀑볡 μ €μž₯ν•˜μ—¬ 99.999999999%의 κ°€μš©μ„± 제곡.
  • λ‹€μ–‘ν•œ μŠ€ν† λ¦¬μ§€ 클래슀: μ ‘κ·Ό λΉˆλ„μ™€ λΉ„μš©μ— 따라 S3 Standard, S3 Intelligent-Tiering, S3 Glacier λ“± 선택 κ°€λŠ₯.
  • λ³΄μ•ˆ 및 μ•‘μ„ΈμŠ€ μ œμ–΄: 버킷 μ •μ±…, ACL, IAMκ³Ό μ—°λ™ν•˜μ—¬ 세뢀적인 μ ‘κ·Ό κΆŒν•œ 관리.
  • 라이프사이클 관리: 객체의 μ €μž₯ 기간에 λ”°λ₯Έ μžλ™ 이동 λ˜λŠ” μ‚­μ œ μ •μ±… μ„€μ • κ°€λŠ₯

2. 배포

배포 : 개발된 μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό μ‚¬μš©μžλ‚˜ ν΄λΌμ΄μ–ΈνŠΈ κ°€ μ‚¬μš© ν•  수 μžˆλ„λ‘ ν™˜κ²½μ— λ°°ν¬ν•˜λŠ” 것

2.1 배포의 핡심 μš”μ†Œ

  • μ•ˆμ „μ„± : μ‹œμŠ€ν…œμ˜ μ•ˆμ •μ μΈ 운영 보μž₯
  • ν™•μž₯μ„± : μ‚¬μš©μž 증가에 λ”°λ₯Έ μ‹œμŠ€ν…œ ν™•μž₯ μš©μ΄μ„±
  • νš¨μœ¨μ„± : μžμ› ν™œμš©μ˜ μ΅œμ ν™” 및 λΉ„μš© 절감

2.2 배포 μ „λž΅μ˜ ν•„μš”μ„±

  • μ‹ μ†ν•œ μ—…λ°μ΄νŠΈμ™€ 버그 μˆ˜μ • : 버그가 μ—†λŠ” ν”„λ‘œκ·Έλž¨μ€ μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ”λ‹€. 발견 μ¦‰μ‹œ μˆ˜μ •ν•˜μ—¬ λ¦¬ν…μ…˜μ„ λŠ˜λ¦°λ‹€
  • μ‚¬μš©μž κ²½ν—˜ ν–₯상 및 μ„œλΉ„μŠ€ κ°œμ„  : μ‚¬μš©μžμ˜ λ‹ˆμ¦ˆλŠ” μ§€μ†μ μœΌλ‘œ λ³€ν™”ν•œλ‹€. λΉ λ₯Έ μ—…λ°μ΄νŠΈλ₯Ό 톡해 λ‹ˆμ¦ˆλ₯Ό λ°˜μ˜ν•œλ‹€

2.3 배포 λ°©μ‹μ˜ μ§„ν™”

  • On Premise Server
    • κΈ°μ—…μ—μ„œ 직접 μ„œλ²„ ν•˜λ“œμ›¨μ–΄λ₯Ό κ΅¬λ§€ν•˜κ³  인프라 ꡬ좕
    • 초기 투자 λΉ„μš©μ΄ λ†’κ³  μœ μ§€λ³΄μˆ˜ μžμ›μ΄ 많이 ν•„μš”
    • μ„œλ²„ μ¦μ„€μ‹œ ν•˜λ“œμ›¨μ–΄ μΆ”κ°€ ꡬ맀 및 μ„€μΉ˜ ν•„μš”
    • μž‰μ—¬ 인프라 λ°œμƒ κ°€λŠ₯μ„±
    • λΉ λ₯΄κ³  μœ μ—°ν•œ λ³€ν™” λŒ€μ²˜ λΆˆκ°€λŠ₯
  • Cloud Server
    • AWS, Azure, Google Cloud Platform ν΄λΌμš°λ“œ μ„œλΉ„μŠ€ 이용
    • ν•„μš”ν•œ μžμ›μ„ μ˜¨λ””λ§¨λ“œ(on demand)둜 μ‚¬μš©
    • λΉ„μš© μ΅œμ ν™” (λ…Όλž€μ˜ μ—¬μ§€ 있음)
    • μœ μ—°ν•œ ν™•μž₯μ„±
    • κ³ κ°€μš©μ„± (λ‹€μ–‘ν•œ 지역에 데이터 λΆ„μ‚°)
    • 인프라 관리 λΆ€λ‹΄ μ΅œμ†Œν™”

2.4 둜컬과 ν΄λΌμš°λ“œ 배포 ν™˜κ²½

1
# 둜컬 개발 ν™˜κ²½
2
------- 컴퓨터(localhost) ---
3
ν΄λΌμ΄μ–ΈνŠΈ β†’ | NestJS ---> Postgresql |
4
| <--- |
5
----------------------------
6
7
8
# ν΄λΌμš°λ“œ 배포 ν™˜κ²½
9
--REST API μ„œλ²„-- -- λ°μ΄ν„°λ² μ΄μŠ€ μ„œλ²„ --
10
ν΄λΌμ΄μ–ΈνŠΈ β†’ | NestJS | ---> | Postgresql |
11
| | <--- | |
12
---------------- ------------------

2.5 뢄리 배포의 μž₯점

  • ν™•μž₯μ„± : μ„œλΉ„μŠ€ ꡬ성 μš”μ†Œλ³„ 독립적인 μŠ€μΌ€μΌλ§ κ°€λŠ₯, μžμ› μ‚¬μš© μ΅œμ ν™”λ‘œ λΉ„μš© 효율 μƒμŠΉ
  • κ΄€λ¦¬μš©μ΄ : 문제 λ°œμƒμ‹œ 영ν–₯ λ²”μœ„ μ΅œμ†Œν™”
  • λ³΄μ•ˆμ„± : λ„€νŠΈμ›Œν¬ κ³„μΈ΅μ—μ„œμ˜ μ ‘κ·Ό μ œμ–΄λ‘œ λ³΄μ•ˆ κ°•ν™”. λ―Όκ°ν•œ 데이터에 λŒ€ν•œ μ ‘κ·Ό κΆŒν•œ μ„ΈλΆ„ν™”
  • λ§ˆμ΄ν¬λ‘œμ„œλΉ„μŠ€ μ•„ν‚€ν…μ²˜ : λΆ„λ¦¬λœ 도메인간 독립적인 개발 및 배포 κ°€λŠ₯