AWS 구조 3계층: Region -> AZ -> IDCRegion전 세계에 존재 (국가단위) = 물리적으로, AZ (Availability Zone) 의 집합대부분의 AWS 서비스들은 특정 리전에서 제공된다. (Region-scoped, 리전 서비스 라고 부른다)AZ(Availabilty Zone)한 국가 내 지역별로 설치되어있는 IDC(Internet Data Center) 의 집합시드니 Region (ap-southeast-2) 의 3개의 AZ(Availability Zone)로 구성ap-southeast-2a/2b/2c: 이렇게 Region 뒤에 넘버링이 붙는다.Multi AZ 실무에서 왜 필요한가? 가용성한쪽의 AZ화재라던가 네트워크 이슈 등이 발생했을 시, 다른 한쪽의 AZ로 커버하기 위함카카..
ASAC 웹 풀스택/DevOps
클라우드 컴퓨팅 모델IaaS (Infrastructure as a Service)클라우드를 통해 컴퓨팅, 스토리지, 네트워킹, 가상화와 같은 주문형 인프라 리소스를 제공사용자가 자체 데이터 센터 인프라를 관리, 유지 관리 또는 업데이트할 필요가 없지만, OS, 미들웨어, 가상머신, 앱 또는 데이터를 책임진다.AWS EC2 서버를 생각하면 된다 -> AWS AMI(OS이미지) 선택을 해야 서버 구성 가능클라우스 서버시가 제공: 네트워크, 서버개발자가 직접 구축: OS 및 런터임 구성, 어플리케이션 구동AWS EC2 서버: AWS AMI(OS이미지) 선택을 해야 서버 구성 가능 PasS (Platform as a Service)클라우드를 통해 애플리케이션을 개발하는 데 필요한 모든 하드웨어 및 소프트웨어 리..
왜 Github Action?CI/CD 툴로 유명한 건 Github Action 혹은 Jenkins 가 있는데, Github Action 사용이유는 Jenkins는 Jenkins 위한 서버를 우리가 따로 구축해야하는데 Github Action은 Github 가 공짜로 제공한다.또한 소스코드 중앙 관리를 위해 Github Repository 를 쓰는 데 Github Action 과 호환성이 좋다. GitHub Actions를 사용하면 자동으로 코드 저장소에서 어떤 이벤드(event) 가 발생했을 때, 특정 작업이 일어나게 하거나, 주기적으로 어떤 작업들을 반복해서 실행시킬 수도 있다.테스트: 누군가가 코드 저장소에 Pull Request 를 생성하게 되면, Github Action을 통해 해당 코드 변경..
Multi-Stage buildMulti-Stage 포스팅Docker 이미지의 목적은 실행이지, 빌드에 있지 않다. 컴파일이나 빌드 관련 명령어는 제외하자과거에는 도커 이미지 생성 시 프로그램 빌드 후 도커 이미지 생성현재에는 이미 프로그램 빌드가 마쳐진 결과물만 가지고 (COPY) 도커 이미지 생성혹시라도 도커 이미지 내에서 프로그램 빌드(컴파일)을 한다면 멀티 스테이지 도입이 시급Java의 경우 `/gradlew clean build`, JS인 경우 `npm install`Java인 경우 `build` 디렉토리에 쌓인 `.class` 바이트코드 사이즈가 너무 크고 (.JAR 파일을 COPY해서 사용하는 이유)JS의 경우 `node_nodule` 사이즈가 너무 크다.도커 이미지의 사이즈는 크면 클수록 ..
Docker 사용 시 마주할 용어docker image(이미지) : Docker 격리 정의 단위Dockerfile: Docker 격리 정의 서술 (Instruction)Docker Container(컨테이너): Docker 격리 동작 단위 = 격리된 공간에서 실행중인 Docker 이미지Docker Engine(= API + CLI + Docker Deamon) : Docker 이미지를 구동 및 관리하기 위한 엔진Docker Engine 위에 이미지를 올리고 Run 구동 시 독립적인 Docker Container 실행Host 호스트 = Node 노드 = Instance 인스턴스 = Server 서버: Docker Engine 구동Host는 다수의 Container를 갖는다.Node는 다수의 Containe..
CD: AWS EC2 생성 후 내부 접속하여 CI 로 만든 Docker 이미지 실행개발자 대신 Github Action이 직접 EC2에 접근하여 도커 이미지를 컨테이너로 실행아래 과정을 거쳐서 Github Action을 자동화 해줘야한다.1. github action 에게 접근하고 조작할 수 있는 권한주기 -> IAM 을 통해서 부여2. github action 이 EC2 서버에 들어가기 위한 방화벽 설정3. EC2 shell 에 접근하기 위해 key pair 사용하지 않고 IAM 으로 접근해서 image pull, run 자동화1. AWS IAM 설정: Github Actions 가 EC2 에 접근할 계정 생성IAM: AWS 서비스에 대한 접근 권한을 가진 사용자를 생성하는 서비스Github Acti..
Docker 격리 정의 시 : 단일 / 다중 이미지 정의하나의 OS 위 다양한 컨테이너를 조합하여 어플리케이션 구동 가능어플리케이션 = 컨테이너 조합 (컨테이너는 격리된 공간에서 프로세스가 동작하는 기술)단일 컨테이너 어플리케이션 관리: Dockerfile 통한 단일 이미지 구성 및 구동다중 컨테이너 어플리케이션 관리: Docker-Compose 통한 다수 이미지 구성 및 구동Docker Compose 내 다중 컨테이너 사이에서의 network 도커 안에서 컨테이너끼리 network 통신하기 위해 (1) User-defined Bridge, (2) Hostname 2가지가 있음. docker-compose.yml 파일 내 `ports:` 옵션만 준 경우 Spring 에서 MySQL 사용시 어떤 포트 사용..
Docker 왜 사용하는가?1. 일관성 보장2. 다중 컨테이너 지원1. 일관성 보장어플리케이션이 어떤 머신에서도 정상 및 동일 동작하기 위해서는 어플리케이션이 구동되는데 필요한 모든 것들이 아래의 환경과 버전 등이 맞아야한다. -> 이를 일관성이라고 한다.Application 파일환경 변수런타임 환경, 버전서드파티 라이브러리Cut down OS 격리 (Isolation) & 일관성 (Consistency)격리 : 로컬(인스턴스)의 환경과 분리된 도커 환경으로 로컬 환경을 오염 / 충돌하지 않음일관성 : 다양한 로컬(인스턴스)에서도 도커로 일관된 어플리케이션 구동 가능도커가 없다면 로컬(인스턴스)의 환경과 + App 구동을 위한 환경이 충돌하고 이리저리 섞인다.도커가 있다면 로컬(인스턴스)의 환경과 + A..