ํฐ์คํ ๋ฆฌ ๋ทฐ
๐ฆฅ ํด๋ผ์ฐ๋๋?
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
- Java
- ์ด์์ฒด์
- ํธ๋์ญ์
- ํ์ผ์ ๋ก๋์ค์
- graphql
- OS
- N+1
- ci/cd
- ddl-auto
- ๋ค์ด๋ฒํด๋ผ์ฐ๋
- SpringGraphQL
- Oracle
- ํ๋ก๊ทธ๋๋จธ์ค
- db
- JPA
- ๋๋ค์
- ์ธ๋ฑ์ค
- spring
- ํธ๋์ญ์ ๊ฒฉ๋ฆฌ์ฑ
- Travis CI
- Til
- ORA-27125
- EC2
- SpringSecurity
- level0
- AWS
- ๊ธฐ์ ๋ฉด์
- nginx
- CodeDeploy
- TCP
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |