스터디모아 인프라

Wonjun Hwang
Wonjun HwangCEO @Kit Works Inc. um Kit Works inc.
스터디모아 인프라
개발계
GitHub
Actions
Code
Deploy
EC2
S3
S3
RDS
Node.js
Apache2
App
GitHub
Admin
운영계
GitHub
Actions
Code
Deploy
S3
S3
RDS
GitHub EC2
Api
Apache2
App Admin
#########
#########
Api
Apache2
App Admin
#########
Scheduler
PM2
KSNet
CI/CD
GitHub Actions
GitHub
CI/CD – GitHub Actions
Workflow 정의
CI/CD – Workflow Trigger
운영계 배포는 수동으로 하는 중
CI/CD – GitHub Actions
workflow가 참조 중인 브랜치가
release일 때만 job실행
release 브랜치로 checkout
현재 사용중인 node 버전 출력
Node_modules 디렉코리를 캐싱
yarn.lock의 해시 값이 변경될 때만 새로운 캐시를 재생성
소스코드를 build-api.zip 압축
node_modules는 제외
CI/CD – S3 Upload
AWS 자격 증명 설정
GitHub Secrets 환경변수에서 값 추출
aws s3 cp 명령어 실행하여 업로드 수행
${AWS_REGION}으로 ######.zip을
s3://####/… 경로로 복사
CI/CD – Code Deploy
#사전에 EC2 서버에 AWS 자격증명 설정 및 aws deploy 설치 필요
aws deploy create-deployment 명령어로 EC2에 배포 수행
--CodeDeploy에 미리 생성된 애플리케이션 정보 기입
“#######” 배포 전략 = 모든 EC2 인스턴스 그룹에 동시 배포
이전에 S3에 업로드 했던 build파일을 복사
각 EC2 인스턴스에 설치된 aws codedeploy가 실행되며,
######.zip 내부 appspec.yml의 설정에 따라 배포 작업 처리
CI/CD – 배포, appspec.yml
-배포된 디렉토리 권한지정
-읽기, 쓰기, 실행 권한
os 버전
배포할 파일 지정
-루트 디렉토리의 모든 파일
-배포될 디렉토리
-덮어쓰기
배포과정 중 실행할 작업 정의
배포 이후에 ####.sh수행
CI/CD – 배포, 쉘스크립트
####.sh
Blue과 green이라는 docker 컨테이너가 존재하는데,
Blue의 경우 #### -> ####으로, green의 경우 #### -> ####
.env 파일에 CURRENT 환경 변수를 조건에 따라 수정
docker 이미지 빌드
Os에 맞춰 아파치2 프록시 설정
CI/CD – 무중단배포
4000
4000
4000
4000
4000
4000
4000
CI/CD – 컨테이너 정의, docker-compose
CI/CD – 프록시
운영계
GitHub
Actions
Code
Deploy
S3
S3
RDS
GitHub EC2
Api
Apache2
App Admin
#########
#########
Api
Apache2
App Admin
#########
Scheduler
PM2
KSNet
1 von 15

Recomendados

[AWS Dev Day] 앱 현대화 | 코드 기반 인프라(IaC)를 활용한 현대 애플리케이션 개발 가속화, 우리도 할 수 있어요 - 김필중... von
[AWS Dev Day] 앱 현대화 | 코드 기반 인프라(IaC)를 활용한 현대 애플리케이션 개발 가속화, 우리도 할 수 있어요 - 김필중...[AWS Dev Day] 앱 현대화 | 코드 기반 인프라(IaC)를 활용한 현대 애플리케이션 개발 가속화, 우리도 할 수 있어요 - 김필중...
[AWS Dev Day] 앱 현대화 | 코드 기반 인프라(IaC)를 활용한 현대 애플리케이션 개발 가속화, 우리도 할 수 있어요 - 김필중...Amazon Web Services Korea
2.7K views63 Folien
[웨비나] 다중 AWS 계정에서의 CI/CD 구축 von
[웨비나] 다중 AWS 계정에서의 CI/CD 구축[웨비나] 다중 AWS 계정에서의 CI/CD 구축
[웨비나] 다중 AWS 계정에서의 CI/CD 구축BESPIN GLOBAL
597 views29 Folien
AWS Meetup 프리젠테이션.pdf von
AWS Meetup 프리젠테이션.pdfAWS Meetup 프리젠테이션.pdf
AWS Meetup 프리젠테이션.pdfAlexLee226686
23 views17 Folien
Windows Kubernetes Bootstrapping and Operations von
Windows Kubernetes Bootstrapping and OperationsWindows Kubernetes Bootstrapping and Operations
Windows Kubernetes Bootstrapping and OperationsJung Hyun Nam
531 views34 Folien
AWS CDK von
AWS CDKAWS CDK
AWS CDKWonjun Hwang
83 views16 Folien
AWS DevOps와 ECR을 통한 Elastic Beanstalk 배포 환경 구축 및 타 환경과의 비교 von
AWS DevOps와 ECR을 통한 Elastic Beanstalk 배포 환경 구축 및 타 환경과의 비교AWS DevOps와 ECR을 통한 Elastic Beanstalk 배포 환경 구축 및 타 환경과의 비교
AWS DevOps와 ECR을 통한 Elastic Beanstalk 배포 환경 구축 및 타 환경과의 비교ssuserd4f9ff
370 views35 Folien

Más contenido relacionado

Similar a 스터디모아 인프라

모바일을 위한 (AWS) 클라우드 기술 동향 von
모바일을 위한 (AWS) 클라우드 기술 동향 모바일을 위한 (AWS) 클라우드 기술 동향
모바일을 위한 (AWS) 클라우드 기술 동향 AWSKRUG - AWS한국사용자모임
1.6K views54 Folien
Amazed by aws 2nd session von
Amazed by aws 2nd sessionAmazed by aws 2nd session
Amazed by aws 2nd sessionAmazon Web Services Korea
1.7K views81 Folien
DevOps - CI/CD 알아보기 von
DevOps - CI/CD 알아보기DevOps - CI/CD 알아보기
DevOps - CI/CD 알아보기SeungYong Baek
199 views47 Folien
SOSCON 2017 - Backend.AI von
SOSCON 2017 - Backend.AISOSCON 2017 - Backend.AI
SOSCON 2017 - Backend.AIJoongi Kim
327 views42 Folien
Amazon EKS를 위한 AWS CDK와 CDK8s 활용법 - 염지원, 김광영 AWS 솔루션즈 아키텍트 :: AWS Summit Seou... von
Amazon EKS를 위한 AWS CDK와 CDK8s 활용법 - 염지원, 김광영 AWS 솔루션즈 아키텍트 :: AWS Summit Seou...Amazon EKS를 위한 AWS CDK와 CDK8s 활용법 - 염지원, 김광영 AWS 솔루션즈 아키텍트 :: AWS Summit Seou...
Amazon EKS를 위한 AWS CDK와 CDK8s 활용법 - 염지원, 김광영 AWS 솔루션즈 아키텍트 :: AWS Summit Seou...Amazon Web Services Korea
943 views47 Folien
[부스트캠퍼세미나]육진혁_(대충 도커 쓰자는 이야기) von
[부스트캠퍼세미나]육진혁_(대충 도커 쓰자는 이야기)[부스트캠퍼세미나]육진혁_(대충 도커 쓰자는 이야기)
[부스트캠퍼세미나]육진혁_(대충 도커 쓰자는 이야기)CONNECT FOUNDATION
311 views18 Folien

Similar a 스터디모아 인프라(20)

SOSCON 2017 - Backend.AI von Joongi Kim
SOSCON 2017 - Backend.AISOSCON 2017 - Backend.AI
SOSCON 2017 - Backend.AI
Joongi Kim327 views
Amazon EKS를 위한 AWS CDK와 CDK8s 활용법 - 염지원, 김광영 AWS 솔루션즈 아키텍트 :: AWS Summit Seou... von Amazon Web Services Korea
Amazon EKS를 위한 AWS CDK와 CDK8s 활용법 - 염지원, 김광영 AWS 솔루션즈 아키텍트 :: AWS Summit Seou...Amazon EKS를 위한 AWS CDK와 CDK8s 활용법 - 염지원, 김광영 AWS 솔루션즈 아키텍트 :: AWS Summit Seou...
Amazon EKS를 위한 AWS CDK와 CDK8s 활용법 - 염지원, 김광영 AWS 솔루션즈 아키텍트 :: AWS Summit Seou...
[부스트캠퍼세미나]육진혁_(대충 도커 쓰자는 이야기) von CONNECT FOUNDATION
[부스트캠퍼세미나]육진혁_(대충 도커 쓰자는 이야기)[부스트캠퍼세미나]육진혁_(대충 도커 쓰자는 이야기)
[부스트캠퍼세미나]육진혁_(대충 도커 쓰자는 이야기)
CONNECT FOUNDATION311 views
효과적인 데브옵스를 위한 AWS 개발 도구 활용하기 - AWS Summit Seoul 2017 von Amazon Web Services Korea
효과적인 데브옵스를 위한 AWS 개발 도구 활용하기 - AWS Summit Seoul 2017효과적인 데브옵스를 위한 AWS 개발 도구 활용하기 - AWS Summit Seoul 2017
효과적인 데브옵스를 위한 AWS 개발 도구 활용하기 - AWS Summit Seoul 2017
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축 von Ji-Woong Choi
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
Ji-Woong Choi4.6K views
아키텍처 현대화 분야 신규 서비스 - 주성식, AWS 솔루션즈 아키텍트 :: AWS re:Invent re:Cap 2021 von Amazon Web Services Korea
아키텍처 현대화 분야 신규 서비스 - 주성식, AWS 솔루션즈 아키텍트 :: AWS re:Invent re:Cap 2021아키텍처 현대화 분야 신규 서비스 - 주성식, AWS 솔루션즈 아키텍트 :: AWS re:Invent re:Cap 2021
아키텍처 현대화 분야 신규 서비스 - 주성식, AWS 솔루션즈 아키텍트 :: AWS re:Invent re:Cap 2021
AWS Fargate와 Amazon ECS를 사용한 CI/CD 베스트 프랙티스 - 유재석, AWS 솔루션즈 아키텍트 :: AWS Build... von Amazon Web Services Korea
AWS Fargate와 Amazon ECS를 사용한 CI/CD 베스트 프랙티스 - 유재석, AWS 솔루션즈 아키텍트 :: AWS Build...AWS Fargate와 Amazon ECS를 사용한 CI/CD 베스트 프랙티스 - 유재석, AWS 솔루션즈 아키텍트 :: AWS Build...
AWS Fargate와 Amazon ECS를 사용한 CI/CD 베스트 프랙티스 - 유재석, AWS 솔루션즈 아키텍트 :: AWS Build...
MEAN Stack 기반 모바일 서비스 개발 overview von 민태 김
MEAN Stack 기반 모바일 서비스 개발 overviewMEAN Stack 기반 모바일 서비스 개발 overview
MEAN Stack 기반 모바일 서비스 개발 overview
민태 김8K views
AWS Fargate와 Amazon ECS를 활용한 CI/CD 모범사례 - 유재석, AWS 솔루션즈 아키텍트 :: AWS Game Mast... von Amazon Web Services Korea
AWS Fargate와 Amazon ECS를 활용한 CI/CD 모범사례 - 유재석, AWS 솔루션즈 아키텍트 :: AWS Game Mast...AWS Fargate와 Amazon ECS를 활용한 CI/CD 모범사례 - 유재석, AWS 솔루션즈 아키텍트 :: AWS Game Mast...
AWS Fargate와 Amazon ECS를 활용한 CI/CD 모범사례 - 유재석, AWS 솔루션즈 아키텍트 :: AWS Game Mast...
텀 프로젝트에서 제품 프로젝트로 - 성준영님 von NAVER D2
텀 프로젝트에서 제품 프로젝트로 - 성준영님텀 프로젝트에서 제품 프로젝트로 - 성준영님
텀 프로젝트에서 제품 프로젝트로 - 성준영님
NAVER D27.8K views
Docker 로 Linux 없이 Linux 환경에서 개발하기 von iFunFactory Inc.
Docker 로 Linux 없이 Linux 환경에서 개발하기Docker 로 Linux 없이 Linux 환경에서 개발하기
Docker 로 Linux 없이 Linux 환경에서 개발하기
iFunFactory Inc.35.7K views
Unity Auto Build iOS von Giseok Lee
Unity Auto Build iOSUnity Auto Build iOS
Unity Auto Build iOS
Giseok Lee12.5K views
GitLab과 Kubernetes를 통한 CI/CD 구축 von 철구 김
GitLab과 Kubernetes를 통한 CI/CD 구축GitLab과 Kubernetes를 통한 CI/CD 구축
GitLab과 Kubernetes를 통한 CI/CD 구축
철구 김5.8K views
모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트 von Dae Kim
모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트
모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트
Dae Kim7.9K views
Cloud-Barista 제7차 컨퍼런스 : 멀티클라우드 인프라 서비스 연동 (CB-Spider) von Cloud-Barista Community
Cloud-Barista 제7차 컨퍼런스 : 멀티클라우드 인프라 서비스 연동 (CB-Spider)Cloud-Barista 제7차 컨퍼런스 : 멀티클라우드 인프라 서비스 연동 (CB-Spider)
Cloud-Barista 제7차 컨퍼런스 : 멀티클라우드 인프라 서비스 연동 (CB-Spider)
Jenkins를 활용한 Openshift CI/CD 구성 von rockplace
Jenkins를 활용한 Openshift CI/CD 구성 Jenkins를 활용한 Openshift CI/CD 구성
Jenkins를 활용한 Openshift CI/CD 구성
rockplace755 views
Cluster api - koss 2019 von Esther Kim
Cluster api - koss 2019Cluster api - koss 2019
Cluster api - koss 2019
Esther Kim224 views

Más de Wonjun Hwang

컴포넌트 설계 von
컴포넌트 설계컴포넌트 설계
컴포넌트 설계Wonjun Hwang
11 views21 Folien
성능 테스트 von
성능 테스트성능 테스트
성능 테스트Wonjun Hwang
8 views13 Folien
WebRTC von
WebRTCWebRTC
WebRTCWonjun Hwang
20 views18 Folien
Flutter & Firebase von
Flutter & FirebaseFlutter & Firebase
Flutter & FirebaseWonjun Hwang
15 views16 Folien
SOLID von
SOLIDSOLID
SOLIDWonjun Hwang
23 views41 Folien
MSW von
MSWMSW
MSWWonjun Hwang
37 views22 Folien

Más de Wonjun Hwang(20)

프론트엔드 비동기 프로그래밍 von Wonjun Hwang
프론트엔드 비동기 프로그래밍프론트엔드 비동기 프로그래밍
프론트엔드 비동기 프로그래밍
Wonjun Hwang27 views
트렌디 앱 - ARC & OBSIDIAN von Wonjun Hwang
트렌디 앱 - ARC & OBSIDIAN트렌디 앱 - ARC & OBSIDIAN
트렌디 앱 - ARC & OBSIDIAN
Wonjun Hwang27 views
차이나는 개발자 클라스 von Wonjun Hwang
차이나는 개발자 클라스차이나는 개발자 클라스
차이나는 개발자 클라스
Wonjun Hwang6 views
차이나는 개발자 클라스 von Wonjun Hwang
차이나는 개발자 클라스차이나는 개발자 클라스
차이나는 개발자 클라스
Wonjun Hwang35 views
잘못된 상속은 객체지향을 해친다 von Wonjun Hwang
잘못된 상속은 객체지향을 해친다잘못된 상속은 객체지향을 해친다
잘못된 상속은 객체지향을 해친다
Wonjun Hwang48 views

스터디모아 인프라

Hinweis der Redaktion

  1. GitHub Actions workflow는 GitHub에서 제공하는 자동화 도구 중 하나로, 코드 저장소에서 발생하는 이벤트에 응답하여 자동 작업을 수행하는 프로세스입니다. GitHub Actions을 사용하면 소프트웨어 개발 및 배포 프로세스를 자동화하고 CI/CD (지속적 통합/지속적 배포) 워크플로우를 설정할 수 있습니다.
  2. 이벤트 (Events): Workflow를 시작할 이벤트를 정의합니다. 예를 들어, 코드 푸시, 이슈 생성, 풀 리퀘스트 생성 등이 될 수 있습니다. 작업 (Jobs): Workflow 내에서 실행할 하나 이상의 작업을 정의합니다. 작업은 병렬 또는 순차적으로 실행될 수 있으며, 각 작업은 독립적으로 실행 가능한 단위입니다. 단계 (Steps): 작업은 단계로 구성됩니다. 각 단계는 명령어 또는 스크립트를 실행하거나 Docker 컨테이너 내에서 작업을 수행하는 등의 작업을 나타냅니다. 런너 (Runners): GitHub Actions는 GitHub의 런너에서 실행됩니다. 런너는 GitHub의 인프라에서 호스팅되는 가상 머신 또는 컨테이너 환경입니다. 환경 변수 (Environment Variables): Workflow에 전달되는 환경 변수를 정의하여 빌드 및 배포 과정에서 사용할 수 있습니다. 시크릿 (Secrets): 민감한 정보나 인증 토큰과 같은 보안 정보를 안전하게 저장하고 관리하기 위해 GitHub의 시크릿 스토어를 활용할 수 있습니다.
  3. appspec.yml 파일은 AWS CodeDeploy를 사용하여 애플리케이션을 배포할 때 필요한 설정을 정의하는 파일입니다. 이 파일은 배포 대상 환경에서 어떤 파일을 배포할 것인지, 배포된 파일에 대한 권한 및 규칙을 어떻게 설정할 것인지, 배포 후 어떤 작업을 실행할 것인지 등을 정의합니다.
  4. 이러한 작업은 주로 블루/그린 배포와 같이 두 가지 버전의 애플리케이션을 번갈아가면서 사용하는 상황에서 사용됩니다. 컨테이너가 어떤 버전을 사용할지를 .env 파일의 "CURRENT" 환경 변수에 저장하고, 필요한 환경 변수를 설정하여 애플리케이션을 구성하게 됩니다. source .env: .env 파일을 source 명령을 사용하여 현재 셸 세션에 로드합니다. 이를 통해 이전에 .env 파일에 설정된 환경 변수들이 현재 셸 세션으로 가져와집니다. 이전에 .env 파일에서 설정한 환경 변수를 사용할 수 있게 됩니다. 이 코드는 sed 명령어를 사용하여 텍스트 파일에서 문자열을 치환하는 작업을 수행하는 부분입니다. 주로 설정 파일 등에서 특정 값을 변경하거나 치환할 때 사용됩니다. 두 개의 sed 명령어가 사용되었으며, 각각의 역할은 다음과 같습니다:
  5. 8080 포트로 연결된 컨테이너 8081포트로 다른 다른 버전의 컨테이너 띄우기 nginx.conf 수정후 reload (업스트립 8081 수정) 8080 컨테이너 제거 개념은 정말 간단합니다. 새로 배포할 때마다 새로운 컨테이너들을 띄우고 nginx 연결(upstream)을 새로 띄운 컨테이너 포트로 연결한 뒤 이전 컨테이너는 내립니다.
  6. 이러한 작업은 주로 블루/그린 배포와 같이 두 가지 버전의 애플리케이션을 번갈아가면서 사용하는 상황에서 사용됩니다. 컨테이너가 어떤 버전을 사용할지를 .env 파일의 "CURRENT" 환경 변수에 저장하고, 필요한 환경 변수를 설정하여 애플리케이션을 구성하게 됩니다. source .env: .env 파일을 source 명령을 사용하여 현재 셸 세션에 로드합니다. 이를 통해 이전에 .env 파일에 설정된 환경 변수들이 현재 셸 세션으로 가져와집니다. 이전에 .env 파일에서 설정한 환경 변수를 사용할 수 있게 됩니다.
  7. 이러한 작업은 주로 블루/그린 배포와 같이 두 가지 버전의 애플리케이션을 번갈아가면서 사용하는 상황에서 사용됩니다. 컨테이너가 어떤 버전을 사용할지를 .env 파일의 "CURRENT" 환경 변수에 저장하고, 필요한 환경 변수를 설정하여 애플리케이션을 구성하게 됩니다. source .env: .env 파일을 source 명령을 사용하여 현재 셸 세션에 로드합니다. 이를 통해 이전에 .env 파일에 설정된 환경 변수들이 현재 셸 세션으로 가져와집니다. 이전에 .env 파일에서 설정한 환경 변수를 사용할 수 있게 됩니다.