[CS] [Deploy] Amazon Web Service(AWS)

HannahhhΒ·2022λ…„ 10μ›” 11일
0

CS

λͺ©λ‘ 보기
5/6

πŸ” Amazon Web Service(AWS)


배포λ₯Ό μœ„ν•œ ν΄λΌμš°λ“œ μ„œλΉ„μŠ€



πŸ‘€ Cloud Computing


주기적인 μœ μ§€ 관리가 ν•„μš”ν•˜κ³  κ³΅κ°„μ˜ ν•œκ³„λΌλŠ” 문제점이 있던 κΈ°μ‘΄ μ„œλ²„μ˜ λ°©μ‹μ˜ 단점을 λ³΄μ™„ν•˜κΈ° μœ„ν•΄, μ„œλ²„μ˜ μžμ›κ³Ό 곡간 및 λ„€νŠΈμ›Œν¬ ν™˜κ²½μ„ μ œκ³΅ν•΄μ£ΌλŠ” μ„œλΉ„μŠ€μ΄λ‹€.

ν•„μš”ν•  λ•Œ λ§ˆλ‹€ μ»΄ν“¨νŒ… λŠ₯λ ₯을 μœ μ—°ν•˜κ²Œ μ‘°μ ˆν•  수 있고, μ‚¬μš©ν•œ 만큼의 μš”κΈˆλ§Œ μ§€λΆˆν•˜λ©°, μ»΄ν“¨ν„°μ˜ μŠ€λƒ…μƒ·μ„ μ΄μš©ν•΄ λ‹€λ₯Έ μ»΄ν“¨ν„°λ‘œ μ¦‰μ‹œ 이주가 κ°€λŠ₯ν•˜λ‹€λŠ” μž₯점이 μžˆλ‹€.

단, 운영 ν™˜κ²½ μžμ²΄κ°€ ν΄λΌμš°λ“œ μ„œλΉ„μŠ€μ— μ’…μ†λ˜μ–΄ μ„œλΉ„μŠ€μ— 영ν–₯을 λ―ΈμΉœλ‹€λŠ” 단점이 μžˆλ‹€.(ex. μ•„λ§ˆμ‘΄ μ›Ή μ„œλΉ„μŠ€μ˜ μž₯μ• λ‘œ νŠΉμ • μ„œλΉ„μŠ€μ˜ μ„œλ²„κ°€ μ§€μ—°λ˜λŠ” 상황)


ν΄λΌμš°λ“œλŠ” λͺ¨λ“  것을 μ„œλΉ„μŠ€ν™”ν•˜λŠ” 것을 λͺ©ν‘œλ‘œ ν•˜λ©°, λŒ€ν‘œμ μΈ ν΄λΌμš°λ“œ μ„œλΉ„μŠ€μ˜ ν˜•νƒœλŠ” μ•„λž˜μ™€ κ°™λ‹€.

  • Saas(Software as a Service) : ν΄λΌμš°λ“œ μ œκ³΅μžκ°€ λ‹Ήμž₯ μ‚¬μš© κ°€λŠ₯ν•œ μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό μ œκ³΅ν•˜λŠ” 경우(λ„€νŠΈμ›Œν¬, ν•˜λ“œμ›¨μ–΄, 운영체제, ν”Œλž«νΌ/λ°μ΄ν„°λ² μ΄μŠ€, μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜)

  • PaaS(Platform as a Service) : ν΄λΌμš°λ“œ μ œκ³΅μžκ°€ λ°μ΄ν„°λ² μ΄μŠ€, 개발 ν”Œλž«νΌκΉŒμ§€ μ œκ³΅ν•˜λŠ” 경우(λ„€νŠΈμ›Œν¬, ν•˜λ“œμ›¨μ–΄, 운영체제, ν”Œλž«νΌ/λ°μ΄ν„°λ² μ΄μŠ€)

  • IaaS(Infrastructure as a Service) : ν΄λΌμš°λ“œ μ œκ³΅μžκ°€ 가상 μ»΄ν“¨ν„°κΉŒμ§€ μ œκ³΅ν•˜λŠ” 경우(λ„€νŠΈμ›Œν¬, ν•˜λ“œμ›¨μ–΄)

즉, ν΄λΌμš°λ“œ μ œκ³΅μžλ‘œλΆ€ν„° μ–Όλ§ˆλ§ŒνΌμ˜ μ„œλΉ„μŠ€λ₯Ό μ œκ³΅λ°›λŠλƒμ— 따라 μ„œλΉ„μŠ€μ˜ ν˜•νƒœκ°€ κ΅¬λΆ„λœλ‹€.(AWS = IaaS에 κ°€κΉŒμ›€)




πŸ‘€ Deploy


Deploy(배포)λž€ κ°œλ°œν•œ μ„œλΉ„μŠ€λ₯Ό μ‚¬μš©μžκ°€ μ΄μš©κ°€λŠ₯ν•˜κ²Œ ν•˜λŠ” κ³Όμ •μœΌλ‘œ, 기본적으둜 κ°œλ°œν•œ μ„œλΉ„μŠ€λ₯Ό μ•„λž˜μ™€ 같이 4단계λ₯Ό κ±°μ³μ„œ λ°°ν¬ν•œλ‹€.

DevelopmentIntegrationStagingProduction
Local 컴퓨터 ν™˜κ²½μ—μ„œ 개발 및 ν…ŒμŠ€νŠΈ)각 컴퓨터(ν™˜κ²½)μ—μ„œ 개발된 뢀뢄을 μ·¨ν•©.Production 단계와 κ°€μž₯ μœ μ‚¬ν•œ ν™˜κ²½μ—μ„œ ν…ŒμŠ€νŠΈμ΄μ „μ— 개발 ν™˜κ²½κ³ΌλŠ” κ΅¬λΆ„ν•˜μ—¬ μ‚¬μš©μžκ°€ 접속할 수 μžˆλŠ” Production ν™˜κ²½μ—μ„œ μ½”λ“œ ꡬ동 및 μ„œλΉ„μŠ€ 제곡
ν…ŒμŠ€νŠΈ μ‹œ, μ‹€μ œ 데이터x -> 더미 데이터(Sample Data) μ΄μš©μ½”λ“œ κ°„ Conflictκ°€ μ—†λŠ” 지 ν™•μΈν•˜λŠ” κ³Όμ •μ‹€μ œ 데이터λ₯Ό λ³΅μ‚¬ν•˜μ—¬ λ‹€μ–‘ν•œ ν™˜κ²½μ—μ„œ ν…ŒμŠ€νŠΈμ‹€μ œ 데이터 이용
변경사항 μžˆμ–΄λ„ 문제xμž‘μ„±ν•œ μ½”λ“œκ°€ λ‹€λ₯Έ μ½”λ“œμ— 문제λ₯Ό λ°œμƒμ‹œν‚€μ§€ μ•ŠλŠ” 지 확인λͺ¨λ“  κ΄€κ³„μž(λ§ˆμΌ€νŒ…, λ””μžμΈνŒ€..)κ°€ μ˜ˆμƒν–ˆλ˜ 결과인 지 ν™•μΈμ‹€μ œλ‘œ μ„œλΉ„μŠ€ 제곡
λͺ¨λ“  ꡬ성원이 각자의 ν™˜κ²½μ—μ„œ 진행

μ—¬λŸ¬ λͺ…이 μž‘μ—…ν•˜λŠ” ν”„λ‘œμ νŠΈμ˜ 경우, node λ²„μ „μ΄λ‚˜ 인증 정보, λ°μ΄ν„°λ² μ΄μŠ€μ— μ ‘κ·Όν•˜κΈ° μœ„ν•΄ μ‚¬μš©ν•˜λŠ” μ—”λ“œ 포인트 등이 각자 λ‹€λ₯΄λ―€λ‘œ, 배포λ₯Ό ν•˜κΈ°μœ„ν•΄μ„œλŠ” ν™˜κ²½μ˜ 차이λ₯Ό μ΄ν•΄ν•˜κ³  ν™˜κ²½ 섀정을 μ½”λ“œμ™€ λΆ„λ¦¬ν•˜λŠ” 것이 μ€‘μš”ν•˜λ‹€.


ꡬ체적으둜, μž‘μ„±ν•œ μ½”λ“œλ₯Ό λ‹€λ₯Έ ν™˜κ²½μ—μ„œ 정상 μž‘λ™ν•  수 있게 ν•˜λ €λ©΄ 섀정을 ν™˜κ²½ λ³€μˆ˜(env)에 μ €μž₯ν•΄μ•Ό ν•œλ‹€.(μ½”λ“œ λ³€κ²½ 없이 배포 λ•Œ λ§ˆλ‹€ μ‰½κ²Œ λ³€κ²½ κ°€λŠ₯)
λ˜ν•œ, μ½”λ“œ μƒμ˜ λͺ¨λ“  곳에 μ ˆλŒ€ 경둜 λŒ€μ‹  μƒλŒ€ 경둜λ₯Ό μ‚¬μš©ν•΄μ•Όν•˜λ©°, docker와 같은 개발 ν™˜κ²½ 자체λ₯Ό 톡일 μ‹œν‚€λŠ” μ†”λ£¨μ…˜μ„ μ‚¬μš©ν•œλ‹€.




πŸ‘€ Amazon EC2(Elastic Compute Cloud)


AWSμ—μ„œ μ œκ³΅ν•˜λŠ” ν΄λΌμš°λ“œ μ»΄ν“¨νŒ… μ„œλΉ„μŠ€λ‘œ, AWSμ—μ„œ μ›κ²©μœΌλ‘œ μ œμ–΄ν•  수 μžˆλŠ” κ°€μƒμ˜ 컴퓨터λ₯Ό ν•œ λŒ€ λΉŒλ¦¬λŠ” 것과 κ°™κΈ°λ•Œλ¬Έμ— μ»΄ν“¨ν„°λ‘œ ν•  수 μžˆλŠ” λͺ¨λ“  일을 ν•  수 μžˆλ‹€.

  • AWSμ—μ„œ 컴퓨터 λΉŒλ¦¬λŠ” 것을 Instanceλ₯Ό μƒμ„±ν•œλ‹€κ³  ν•œλ‹€.

κ°€μž₯ 기본적으둜, μ›Ήμ„œλ²„λ₯Ό μ„€μΉ˜ν•˜κ³  이λ₯Ό 톡해 μ‚¬μš©μžκ°€ μ›Ή λΈŒλΌμš°μ €λ₯Ό 톡해 μš”μ²­ν•˜λŠ” μ„œλΉ„λ₯Ό μ œκ³΅ν•  수 μžˆλ‹€.

κ΅¬μ„±ν•˜λŠ” 데 ν•„μš”ν•œ μ‹œκ°„μ΄ 짧고, AMIλ₯Ό ν†΅ν•΄μ„œ μš©λ„μ— 따라 λ‹€μ–‘ν•œ μš΄μ˜μ²΄μ œμ— λŒ€ν•œ 선택이 κ°€λŠ₯ν•˜λ©° λΏλ§Œμ•„λ‹ˆλΌ CPU, RAM, μš©λŸ‰ λ˜ν•œ μ‰½κ²Œ ꡬ성할 수 μžˆλ‹€λŠ” μž₯점이 μžˆλ‹€.



βœ” AMI

μ†Œν”„νŠΈμ›¨μ–΄ ꡬ성이 기재된 ν…œν”Œλ¦ΏμœΌλ‘œ, 운영체제(μœˆλ„μš°, μš°λΆ„νˆ¬, λ¦¬λˆ…μŠ€)만 κΉ”λ €μžˆλŠ” ν…œν”Œλ¦Ώμ„ 선택할 μˆ˜λ„ 있고, νŠΉμ • λŸ°νƒ€μž„μ΄ μ„€μΉ˜λ˜μ–΄ μžˆλŠ” ν…œν”Œλ¦Ώμ΄ μ œκ³΅λ˜λŠ” κ²½μš°λ„ μžˆλ‹€.(μš°λΆ„νˆ¬ + node.js / μœˆλ„μš° + JVM λ“±)

μš©λ„μ— 맞좰 운영체제, λŸ°νƒ€μž„ 듀이 κ΅¬μ„±λœ Setting을 선택할 수 있으며, μ„ νƒν•œ AMIλ₯Ό ν† λŒ€λ‘œ Instanceκ°€ κ΅¬μ„±λœλ‹€.(직접 AMIλ₯Ό κ΅¬μ„±ν•˜λŠ” 것도 κ°€λŠ₯)

  • AMIλ₯Ό ν† λŒ€λ‘œ Setting된 PCλ₯Ό λΉŒλ¦¬λŠ” 것을 AWS EC2 Instanceλ₯Ό μƒμ„±ν•œλ‹€κ³  ν•œλ‹€.




πŸ‘€ RDS(Relational Database Service)


AWSμ—μ„œ μ œκ³΅ν•˜λŠ” κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€ μ„œλΉ„μŠ€λ‘œ, μ‚¬μš©μžλŠ” 초기 섀정을 μ œμ™Έν•˜κ³  μ €μž₯된 데이터λ₯Ό κ΄€λ¦¬ν•˜κΈ°λ§Œ ν•˜λ©΄λ˜κ³ , λ°μ΄ν„°λ² μ΄μŠ€ μœ μ§€ λ³΄μˆ˜μ™€ κ΄€λ ¨λœ 일듀을 RDSμ—μ„œ μ „μ μœΌλ‘œ μžλ™ 관리 ν•΄μ£ΌκΈ° λ•Œλ¬Έμ— νŽΈλ¦¬ν•˜κ²Œ μ‚¬μš©ν•  수 μžˆλ‹€.

λ˜ν•œ, λ‹€μ–‘ν•œ λ°μ΄ν„°λ² μ΄μŠ€ 엔진 선택지λ₯Ό μ œκ³΅ν•œλ‹€.(ORACLE, Amazon Aurora, SQL server, MySQL, MariaDB ...)




πŸ‘€ S3(Simple Storage Service)


AWSμ—μ„œ μ œκ³΅ν•˜λŠ” ν΄λΌμš°λ“œ μŠ€ν† λ¦¬μ§€ μ„œλΉ„μŠ€μ΄λ‹€.


βœ” S3 μ‚¬μš©μ‹œ μž₯점


  1. ν™•μž₯성이 λ†’κΈ° λ•Œλ¬Έμ— μŠ€ν† λ¦¬μ§€ 규λͺ¨λ₯Ό ν™•μž₯/μΆ•μ†Œν•˜κ³ , μš©λŸ‰μ„ λ¬΄ν•œν•˜κ²Œ ν™•μž₯μ‹œν‚¬ 수 μžˆλ‹€.

  2. μ‚¬μš©ν•œ 만큼만 λΉ„μš©μ„ μ§€λΆˆν•˜λ©΄ λœλ‹€.

  3. μŠ€ν† λ¦¬μ§€μ˜ 내ꡬ성이 λ†’μ•„ μ €μž₯된 νŒŒμΌμ„ μœ μ‹€ν•  κ°€λŠ₯성이 적닀.

  4. κ°€μš©μ„±μ΄ λ†’μ•„ μ €μž₯된 νŒŒμΌλ“€μ„ μ •μƒμ μœΌλ‘œ μ‚¬μš©ν•  수 μžˆλŠ” μ‹œκ°„μ΄ κΈΈλ‹€.

  5. λ‹€μ–‘ν•œ μŠ€ν† λ¦¬μ§€ 클래슀λ₯Ό μ œκ³΅ν•˜κΈ° λ•Œλ¬Έμ— μ €μž₯μ†Œλ₯Ό ν™œμš©ν•  λͺ©μ μ— 따라 μŠ€ν† λ¦¬μ§€ 클래슀λ₯Ό 선택할 수 μžˆλ‹€.

    λŒ€ν‘œμ μœΌλ‘œ Standard ν΄λž˜μŠ€μ™€ Glacier 클래슀λ₯Ό μ‚¬μš©ν•œλ‹€.
Standard ClassGlacier Class
데이터 보관 λΉ„μš© λΉ„μŒˆλ°μ΄ν„° λ³΄κ΄€λΉ„μš© μ €λ ΄
데이터 μ—‘μ„ΈμŠ€ 속도 빠름데이터 μ—‘μ„ΈμŠ€ 속도 느림
λ²”μš©μ  λͺ©μ μž₯기적인 보관 λͺ©μ 

이 외에도 Standard-IA, One Zone-IA, S3 Glacier Deep Archive λ“± λ‹€μ–‘ν•œ μŠ€ν† λ¦¬μ§€ ν΄λž˜μŠ€κ°€ μ‘΄μž¬ν•œλ‹€.

  1. 정적 μ›Ή μ‚¬μ΄νŠΈ ν˜ΈμŠ€νŒ…μ΄ κ°€λŠ₯ν•˜λ‹€.

    -μ •μ νŒŒμΌ : μ„œλ²„μ˜ κ°œμž… 없이 제곡될 수 μžˆλŠ” 파일 <-> λ™μ νŒŒμΌ : ν΄λΌμ΄μ–ΈνŠΈκ°€ μ„œλ²„μ— μš”μ²­μ„ 보내 μ„œλ²„κ°€ μš”μ²­μ— λ§žμΆ”μ–΄ μƒμ„±ν•œ 파일

    -μ›Ή ν˜ΈμŠ€νŒ… : μ„œλ²„μ˜ ν•œ 곡간을 μž„λŒ€ν•΄ μ£ΌλŠ” μ„œλΉ„μŠ€λ‘œ, μ›Ή μ‚¬μ΄νŠΈμ˜ 배포 및 μš΄μ˜μ„ κ°€λŠ₯ν•˜κ²Œ ν•΄μ€€λ‹€.

    S3μ—μ„œλŠ” 버킷을 톡해 μ •μ ‘ μ›Ή μ‚¬μ΄νŠΈ ν˜ΈμŠ€νŒ…μ΄ κ°€λŠ₯ν•˜λ‹€.
  • 버킷에 정적 νŒŒμΌμ„ μ—…λ‘œλ“œν•˜κ³  버킷을 정적 μ›Ή μ‚¬μ΄νŠΈ ν˜ΈμŠ€νŒ… μš©λ„λ‘œ κ΅¬μ„±ν•˜μ—¬ λ°°ν¬ν•œλ‹€.

⭐ 버킷?

  • S3에 μ €μž₯λ˜λŠ” νŒŒμΌλ“€μ„ λ‹΄λŠ” λ°”κ΅¬λ‹ˆλ‘œ, νŒŒμΌμ„ μ €μž₯ν•˜λŠ” μ΅œμƒμœ„ 디렉토리이닀.
  • λͺ¨λ“  νŒŒμΌμ€ 버킷 μ•ˆμ— μ €μž₯λ˜μ–΄μ•Ό ν•˜κ³ , λ¬΄ν•œνžˆ λ§Žμ€ νŒŒμΌμ„ μ €μž₯ν•  수 μžˆλ‹€.
  • 각각의 λ²„ν‚·μ˜ 이름은 버킷이 속해 μžˆλŠ” 리전(버킷이 μƒμ„±λœ 지역)μ—μ„œ 유일(고유)ν•΄μ•Όν•œλ‹€.
  • 버킷 정책을 μƒμ„±ν•˜μ—¬ 버킷에 λŒ€ν•œ μ—‘μ„ΈμŠ€ κΆŒν•œμ„ μˆ˜μ •ν•  수 μžˆλ‹€.

⭐ 객체?

  • S3μ—μ„œ μ €μž₯μ†Œμ— 데이터λ₯Ό μ €μž₯ν•  λ•Œ ν‚€-κ°’ νŽ˜μ–΄ ν˜•μ‹μœΌλ‘œ 데이터λ₯Ό μ €μž₯ν•˜κΈ° λ•Œλ¬Έμ— 버킷에 λ‹΄κΈ°λŠ” νŒŒμΌμ„ 객체라고 λΆ€λ₯Έλ‹€.
    파일의 κ°’μ—λŠ” μ‹€μ œ 데이터(μ΅œλŒ€ 5TB)λ₯Ό μ €μž₯ν•  수 있으며 μ‹λ³„μž 역할을 ν•˜λŠ” 파일의 ν‚€(κ³ μœ μ„±)λ₯Ό μ΄μš©ν•΄ μ›ν•˜λŠ” 객체λ₯Ό 검색할 수 μžˆλ‹€.

  • κ°μ²΄λŠ” 파일과 λ©”νƒ€λ°μ΄ν„°λ‘œ κ΅¬μ„±λœλ‹€.(생성일, 크기, μœ ν˜•)

  • λͺ¨λ“  κ°μ²΄λŠ” κ³ μœ ν•œ URL μ£Όμ†Œλ₯Ό 가지고 있으며, URL μ£Όκ³ λ₯Ό 톡해 접근이 κ°€λŠ₯ν•˜λ‹€.

  • URL μ£Όμ†Œ ν˜•μ‹ :http://[λ²„ν‚·μ˜ 이름].S3.amazonaws.com/[객체의 ν‚€]




πŸ‘€ 배포 μ „λž΅(Deploy Strategy)


βœ” Client 배포(S3 + CloudFrent)

ν΄λΌμ΄μ–ΈνŠΈλ₯Ό 정적 파일둜 λΉŒλ“œν•˜μ—¬ λ°°ν¬ν•œλ‹€. λ”°λΌμ„œ, S3λ₯Ό μ΄μš©ν•΄ λ°°ν¬ν•œλ‹€.

⭐ λΉŒλ“œ?
λΆˆν•„μš”ν•œ 데이터 제거 ν›„, 톡합/μ••μΆ•ν•˜μ—¬ λ°°ν¬ν•˜κΈ° μ΅œμ ν™”λœ μƒνƒœλ₯Ό λ§Œλ“œλŠ” κ²ƒμœΌλ‘œ, λ°μ΄ν„°μ˜ μš©λŸ‰μ΄ 쀄어듀고 μ›Ή μ‚¬μ΄νŠΈ λ‘œλ”© 속도가 빨라진닀.

λ˜ν•œ, μ‚¬μš©μžλ“€μ΄ 더 λΉ λ₯΄κ²Œ νŒŒμΌμ„ 받을 수 μžˆλ„λ‘, CDN μ„œλΉ„μŠ€μΈ CloudFrontλ₯Ό ν†΅ν•΄μ„œ Client Application을 μ œκ³΅ν•œλ‹€.

⭐ CloudFront?
κ°μ§€μ˜ 데이터 센터에 데이터λ₯Ό λΆ„μ‚°μ‹œμΌœμ„œ μ €μž₯ν•΄ λ’€λ‹€κ°€ κ°€κΉŒμš΄ μ§€μ—­μ—μ„œ 데이터λ₯Ό μ£ΌλŠ” λ°©μ‹μ˜ CDN μ„œλΉ„μŠ€


βœ” Server Application 배포(EC2 + RDS)

EC2 μ„œλΉ„μŠ€λ₯Ό 톡해 μ„œλ²„λ₯Ό κ΅¬μ„±ν•˜κ³  μ œκ³΅ν•œλ‹€.

λ˜ν•œ, RDSλ₯Ό μ΄μš©ν•˜μ—¬ EC2λ₯Ό 톡해 배포된 Server Application의 데이터λ₯Ό μ €μž₯, μ œκ³΅ν•˜λŠ” λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό 배포할 수 μžˆλ‹€.


βœ” DNS

λ°°ν¬ν•œ μ„œλΉ„μŠ€λ₯Ό 짧고 직관적인 도메인 μ£Όμ†Œλ₯Ό 톡해 μ ‘κ·Όν•˜κΈ° μœ„ν•΄ Route 53 μ„œλΉ„μŠ€λ₯Ό μ΄μš©ν•œλ‹€.






Reference: μ½”λ“œμŠ€ν…Œμ΄μΈ 

0개의 λŒ“κΈ€