ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

๐Ÿฆฅ ํด๋ผ์šฐ๋“œ๋ž€?

public, privata ํด๋ผ์šฐ๋“œ๊ฐ€ ์žˆ๊ณ  ์„œ๋ฒ„ ํ™˜๊ฒฝ์„ ๊ตฌ์ถ•ํ•˜๊ธฐ ์œ„ํ•ด ๋งŽ์€ ๋น„์šฉ์ด ๋“œ๋Š”๋ฐ ํด๋ผ์šฐ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋น„์šฉ์„ ์ ˆ๊ฐํ•  ์ˆ˜ ์žˆ์Œ

๐ŸŒฟ private ํด๋ผ์šฐ๋“œ

- ํŠน์ • ๊ธฐ์—…์ด๋‚˜ ์‚ฌ์šฉ์ž๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ์„œ๋น„์Šค๊ฐ€ ์•„๋‹Œ ์ธํ„ฐ๋„ท์— ์ ‘์† ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•œ ํด๋ผ์šฐ๋“œ ์„œ๋น„์Šค 

๐ŸŒฟ public ํด๋ผ์šฐ๋“œ

- ํŠน์ • ๊ธฐ์—…์ด๋‚˜ ํŠน์ • ์‚ฌ์šฉ์ž๋งŒ์„ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” ํด๋ผ์šฐ๋“œ ์„œ๋น„์Šค

- ๋ณด์•ˆ์ด ๋›ฐ์–ด๋‚˜๋ฉฐ ๊ณ ๊ฐ์ƒํ™ฉ์— ๋”ฐ๋ผ ์ปค์Šคํ„ฐ๋งˆ์ด์ง• ๊ฐ€๋Šฅ

- AWS, Azure, Naver Cloud ๋“ฑ๋“ฑ..

๐Ÿฆฅ ํด๋ผ์šฐ๋“œ ์„œ๋น„์Šค ๋ชจ๋ธ

๐ŸŒฟ IaaS(Infrastructure as a Service)

- ์‚ฌ์šฉ์ž๊ฐ€ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๋ฒ”์œ„๊ฐ€ ๊ฐ€์žฅ ๋„“์€ ์„œ๋น„์Šค

- ์„œ๋ฒ„ OS, ๋ฏธ๋“ค์›จ์–ด, ๋ฐ์ดํ„ฐ, ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜๊นŒ์ง€ ๊ด€๋ฆฌ

๐ŸŒฟ PaaS(Platform as a Service)

- ์„œ๋น„์Šค ์™ธ์ ์ธ ๋ถ€๋ถ„์€ ์‹ ๊ฒฝ ์“ธ ํ•„์š”๊ฐ€ ์—†์ด ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์—๋งŒ ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๋Š” ํด๋ผ์šฐ๋“œ ์„œ๋น„์Šค ๋ชจ๋ธ

- ์šด์˜๋ถ€์„œ๊ฐ€ ์—†๋Š” ํšŒ์‚ฌ๋Š” PaaS ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋จ

- ๋ฐ์ดํ„ฐ์™€ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜๋งŒ ๊ด€๋ฆฌ

๐ŸŒฟ SaaS(Software as a Service)

- ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ๋ถ€ํ„ฐ ์ธํ”„๋ผ๊นŒ์ง€ ์—…์ฒด์—์„œ ์ œ๊ณต

๐Ÿฆฅ VM๊ณผ Docker

๐ŸŒฟ VM

- ํ•˜๋‚˜์˜ ์„œ๋ฒ„์— ํ•˜๋‚˜์˜ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜๋งŒ ์‹คํ–‰์‹œ์ผœ ์ž์›์ด ๋‚จ๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€(?) ํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ€์ƒ๋จธ์‹ ์— ๊ฒŒ์ŠคํŠธ OS ๋ฅผ ์„ค์น˜ํ•œ ํ›„ ๊ฒŒ์ŠคํŠธ OS์— ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์šด์˜

๐ŸŒฟ Docker

- ํ•˜๋‚˜์˜ ์„œ๋ฒ„์— ์—ฌ๋Ÿฌ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์šด์˜ํ•˜๊ณ  ์‹ถ์„ ๋•Œ ๊ฒŒ์ŠคํŠธ OS ์„ค์น˜ ์—†์ด ์—ฌ๋Ÿฌ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์˜ฌ๋ฆด ์ˆ˜ ์žˆ๋Š” ๊ธฐ์ˆ 

๐Ÿฆฅ AWS ์„œ๋น„์Šค

๐ŸŒฟ EC2 ์™€ RDS

- EC2๋Š” ์„œ๋ฒ„ RDS๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค

๐ŸŒฟ S3

- ์Šคํ† ๋ฆฌ์ง€์— ์ด๋ฏธ์ง€ ์—…๋กœ๋“œ, ์ •์  ์›น ํ˜ธ์ŠคํŒ…์„ ํ•  ์ˆ˜ ์žˆ์Œ

๐ŸŒฟ IAM

- AWS ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ์ ‘๊ทผ ๊ถŒํ•œ(์—ญํ• )์„ ๊ด€๋ฆฌํ•˜๋Š” ์„œ๋น„์Šค (์ธ๊ฐ€์„œ๋น„์Šค)

๐Ÿ’ก ์‚ฌ์šฉ์ž : ์‹ค์ œ AWS ์„œ๋น„์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ์šฉ์ž  ํ˜น์€ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜. ์‚ฌ์šฉ์ž์˜ ๋ชจ์Œ.

ex ) ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์ด๋ฏธ์ง€ ์—…๋กœ๋“œ๋ฅผ ์ง„ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ์ž Key๋ฅผ ๋ฐ›์•„์™€์•ผ ํ–ˆ๊ณ , S3 Object ์— ๋Œ€ํ•œ ์—…๋กœ๋“œ ์ ‘๊ทผ๊ถŒํ•œ์„ ์ด์šฉํ–ˆ๋˜ ๊ฒƒ ๊ฐ™์Œ

๐Ÿ’ก ๊ทธ๋ฃน : ๋‹ค์ˆ˜์˜ ์‚ฌ์šฉ์ž๋ฅผ ๋ชจ์•„๋‘” ๊ฒƒ, ํ•˜๋‚˜์˜ ๊ทธ๋ฃน์— ๊ฐ™์€ ๊ถŒํ•œ์„ ์ค„ ๋•Œ ์‚ฌ์šฉ. ์‚ฌ์šฉ์ž๋Š” ์—ฌ๋Ÿฌ ๊ทธ๋ฃน์— ์†ํ•  ์ˆ˜ ์žˆ์Œ.

๐Ÿ’ก ์—ญํ•  : ๊ทธ๋ฃน๊ณผ ์‚ฌ์šฉ์ž ๊ฐ™์ด ์˜๊ตฌ์ ์ธ ๊ถŒํ•œ์ด ์•„๋‹Œ ์ผ์‹œ์ ์ธ ๊ถŒํ•œ์„ ์ค„ ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ์—ญํ• ์ด๋ผ๊ณ  ํ•œ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ์ž„์‹œ ์ž๊ฒฉ ์ฆ๋ช…์„ ํ†ตํ•ด ์„ธ์…˜์„ ๋ถ€์—ฌ๋ฐ›๊ณ  ๋ถ€์—ฌ๋ฐ›์€ ๊ธฐ๊ฐ„๋™์•ˆ AWS ์„œ๋น„์Šค๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ’ก ์ •์ฑ… : ์‚ฌ์šฉ์ž์™€ ๊ทธ๋ฃน, ์—ญํ• ์ด ์–ด๋–ค ๊ฒƒ์„ ํ•  ์ˆ˜ ์žˆ์„์ง€์— ๋Œ€ํ•œ ์„ค์ •. JSON ํŒŒ์ผ๋กœ ๊ตฌ์„ฑ.

๐ŸŒฟ Cognito

- ์‚ฌ์šฉ์ž๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” AWS ์„œ๋น„์Šค ์ธ์ฆ ๋ฐ ์ธ๊ฐ€ ๊ธฐ๋Šฅ์„ ์ œ๊ณต

- ์‚ฌ์šฉ์ž ํ’€๊ณผ ์ž๊ฒฉ์ฆ๋ช… ํ’€๋กœ ๊ตฌ์„ฑ! IAM ์—ญํ• ๋กœ ์ธ์ฆ ์„ฑ๊ณต์‹œ AWS์— ์ž„์‹œ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ์„ ์ค„ ์ˆ˜ ์žˆ์Œ

๐ŸŒฟ Lambda

- ์„œ๋ฒ„๋ฆฌ์Šค ์ปดํ“จํŒ…์„ ์ œ๊ณตํ•˜๋Š” ์„œ๋น„์Šค

- ์„œ๋ฒ„ ์—†์ด ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ์„œ๋น„์Šค

- API ๊ฒŒ์ดํŠธ์›จ์ด ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๊ณ  S3, DB์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์ด๋ฒคํŠธ๋ฅผ ํŠธ๋ฆฌ๊ฑฐ๋กœ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ ๋˜ํ•œ ๊ฐ€๋Šฅ

๐ŸŒฟ CodeDeploy

- ์†Œ์Šค์ฝ”๋“œ๋ฅผ ์ž๋™์œผ๋กœ ๋ฐฐํฌํ•ด์ฃผ๋Š” ์„œ๋น„์Šค

 

๐Ÿฆฅ AWS ์„œ๋น„์Šค๋ฅผ ํ™œ์šฉํ•ด๋ณธ ๊ฒฝํ—˜ (1) : : ๋ฐฐํฌ ์ž๋™ํ™”

- ๋ฐฐํฌ ์ž๋™ํ™”๋ฅผ ์œ„ํ•ด ํ™œ์šฉํ•œ AWS ์„œ๋น„์Šค : S3(๋ฐฐํฌํŒŒ์ผ ์—…๋กœ๋“œ), EC2(๋ฐฐํฌ๋ฅผ ์œ„ํ•œ ์„œ๋ฒ„), CodeDeploy(์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ž๋™ ๋ฐฐํฌ)

# This workflow uses actions that are not certified by GitHub.
# They are provided by a third-party and are governed by
# separate terms of service, privacy policy, and support
# documentation.
# This workflow will build a Java project with Gradle and cache/restore any dependencies to improve the workflow execution time
# For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-gradle

name: CI/CD
on:
  # master ๋ธŒ๋žœ์น˜์— push, pull_request ๋  ๋•Œ workflow ๋ฅผ ์‹คํ–‰ํ•˜๊ฒ ๋‹ค๋Š” ์˜๋ฏธ
  push:
    branches: [ "master" ]

permissions:
  contents: read

jobs:
  build:
    # build ์‹คํ–‰ ํ™˜๊ฒฝ
    runs-on: ubuntu-latest
    # task ์˜ sequence ๋ฅผ ๋ช…์‹œ
    steps:
    # ์ตœ๊ทผ ๋ฒ„์ „์„ ์ฐธ์กฐํ•˜๊ฒ ๋‹ค๋Š” ์˜๋ฏธ
    - uses: actions/checkout@v3
    
    # JDK ์„ค์น˜ 
    - name: Set up JDK 17
      uses: actions/setup-java@v3
      with:
        java-version: '17'
        distribution: 'temurin'
        
    # gradlew ์— ์‹คํ–‰ ๊ถŒํ•œ ๋ถ€์—ฌ
    - name: Grant execute permission for gradlew
      run: chmod +x gradlew
      
    # gradlew build ๋ช…๋ น ์‹คํ–‰
    - name: Build with Gradle
      run: ./gradlew build

    # ์ „์†ก ํŒŒ์ผ์„ ์ €์žฅํ•  ๋””๋ ‰ํ† ๋ฆฌ ์ƒ์„ฑ
    - name: Make Directory for delivery
      run: mkdir deploy

    # jar ํŒŒ์ผ copy
    - name: Copy Jar
      run: cp ./build/libs/*.jar ./deploy/

    # appspec.yml copy
    - name: Copy appspec
      run: cp appspec.yml ./deploy/

    # deploy.sh copy
    - name: Copy deploy.sh
      run: cp deploy.sh ./deploy/

    # ์••์ถ• ํŒŒ์ผ ํ˜•ํƒœ๋กœ ์ „๋‹ฌ
    - name: make zip file
      run: zip -r -qq -j ./app์ด๋ฆ„-build.zip ./deploy

    # S3 ๋ฒ„ํ‚ท์œผ๋กœ zip ํŒŒ์ผ ์—…๋กœ๋“œ
    - name: Delivery to S3
      env:
        AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
        AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
      run:
        aws s3 cp --region ap-northeast-2 --acl private 
        ./app์ด๋ฆ„-build.zip s3://bucket์ด๋ฆ„-deploy/

    # Deploy
    - name: Deploy
      env:
        AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
        AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
      run:
        aws deploy create-deployment --application-name app์ด๋ฆ„ 
        --deployment-group-name app์ด๋ฆ„-group --file-exists-behavior OVERWRITE 
        --s3-location bucket=app์ด๋ฆ„-deploy,bundleType=zip,key=app์ด๋ฆ„-build.zip 
        --region ap-northeast-2

1. github Action์˜ ์„ค์ • ํŒŒ์ผ์„ ์ž‘์„ฑํ•œ๋‹ค

  • gradlew build ๋ช…๋ น์–ด ์‹คํ–‰ํ•˜์—ฌ ๋นŒ๋“œ
    • gradlew : gradle ์„ค์น˜ ์—†์–ด๋„ ์ƒˆ๋กœ์šด ํ”„๋กœ์ ํŠธ๋ฅผ ๋นŒ๋“œํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค
  • zip ํŒŒ์ผ๋กœ ์••์ถ•ํ•˜์—ฌ S3์— ์—…๋กœ๋“œ

2. Github์— push๊ฐ€ ๋œ๋‹ค๋ฉด ์œ„์˜ ์„ค์ •ํŒŒ์ผ์˜ ์Šคํฌ๋ฆฝํŠธ๋“ค์ด ์‹คํ–‰๋œ๋‹ค

3. S3์— ์—…๋กœ๋“œ๋ฅผ ํ•˜๊ณ  ๋ฐฐํฌ๋ฅผ ์ƒ์„ฑํ•˜์—ฌ CodeDeploy๊ฐ€ S3์— ์ƒ์„ฑ๋œ ๋นŒ๋“œ ๋œ ํŒŒ์ผ์„ EC2์— ์—…๋กœ๋“œํ•˜์—ฌ ๋นŒ๋“œ ๋ฐ ๋ฐฐํฌ

  • EC2์— CodeDeploy Agent๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ์–ด์•ผ ํ•จ

๐Ÿฆฅ AWS ์„œ๋น„์Šค๋ฅผ ํ™œ์šฉํ•ด๋ณธ ๊ฒฝํ—˜ (2) : : ์„œ๋ฒ„๋ฆฌ์Šค๋กœ ๋กœ๊ทธ์ธ ๊ตฌํ˜„

- ๋กœ๊ทธ์ธ ์„œ๋น„์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•œ AWS ์„œ๋น„์Šค : S3(์ •์ ์›นํŽ˜์ด์ง€), Coginto(User Pool, Identity Pool), IAM(์—ญํ•  ์ƒ์„ฑ)

 

๐Ÿฆฅ MSA๋ž€

๐ŸŒฟ ๋ชจ๋†€๋ฆฌ์‹ ๊ตฌ์กฐ

- ๋ชจ๋“  ํ”„๋กœ์ ํŠธ๊ฐ€ ํ•˜๋‚˜์˜ ํ”„๋กœ์ ํŠธ์— ํ†ตํ•ฉ๋œ ์ƒํƒœ

- ๋Œ€๊ทœ๋ชจ ์„œ๋น„์Šค์—์„œ ์‹œ์Šคํ…œ ๊ตฌ์กฐ ํŒŒ์•…์ด ์–ด๋ ค์›€

- ๋นŒ๋“œ์™€ ๋ฐฐํฌ๊ฐ€ ๋งค์šฐ ์˜ค๋ž˜๊ฑธ๋ฆฐ๋‹ค

- ํŠน์ • ๊ธฐ๋Šฅ์— ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ๋ฉด ์ „์ฒด ์„œ๋น„์Šค์— ์˜ํ–ฅ์„ ์ค„ ์ˆ˜ ์žˆ์Œ

- ๊ฐœ๋ฐœ ์–ธ์–ด์— ์ข…์†์ 

๐ŸŒฟ MSA (Micro Service Architecture) ๊ตฌ์กฐ

- ์„œ๋น„์Šค๋ฅผ ๊ธฐ๋Šฅ๋‹จ์œ„๋กœ ๋ถ„๋ฆฌํ•˜๋Š” ๊ตฌ์กฐ 

- ์„œ๋น„์Šค๋ฅผ ๋…๋ฆฝ์ ์œผ๋กœ ๋นŒ๋“œ ๋ฐ ๋ฐฐํฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‹œ๊ฐ„์„ ๋‹จ์ถ•ํ•  ์ˆ˜ ์žˆ๋‹ค

- ํ•œ ๊ธฐ๋Šฅ์—์„œ ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์žฅ์• ๊ฐ€ ์ „ํŒŒ๋˜์ง€ ์•Š๋Š”๋‹ค

'๋ฉด์ ‘์งˆ๋ฌธ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Day 05] ์ธ์„ฑ๋ฉด์ ‘ (๊ณ„์†์ˆ˜์ •)  (0) 2022.12.18
[Day04] ๋ฆฌ๋ˆ…์Šค  (0) 2022.12.17
[Day03] Web  (0) 2022.12.15
[Day02] Java  (0) 2022.12.14
[Day02] ๋””์ž์ธ ํŒจํ„ด  (0) 2022.12.14
๋Œ“๊ธ€
๊ณต์ง€์‚ฌํ•ญ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€
Total
Today
Yesterday
๋งํฌ
ยซ   2024/07   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
๊ธ€ ๋ณด๊ด€ํ•จ