일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 데이터웨어하우스
- 기술면접
- Django
- 웹스크래핑
- 취준
- SQL
- 개발
- 자료구조
- 데브코스
- 부트캠프
- AWS
- 에어플로우
- Service
- 운영체제
- airflow
- 데이터엔지니어
- Amazon
- 데이터엔지니어링
- 웹크롤링
- 관계형데이터베이스
- 프로그래머스
- 파이썬
- 개념정리
- 알고리즘
- 웹자동화
- WEB
- CS
- 클라우드
- DataWarehouse
- 데이터베이스
- Today
- Total
사진과 음악을 좋아하는 개발자 지망생의 블로그
[클라우드] 7. AWS CLI, Docker 본문
1. AWS CLI
1) AWS 명령줄 인터페이스
- AWS CLI는 AWS 서비스를 관리하는 통합 도구
- 도구 하나만 다운로드하여 구성하면 여러 AWS 서비스를 명령줄에서 제어하고 스크립트를 통해 자동화 할 수 있다
2) AWS CLI을 작업 수행 목록
① 인프라 구성 관리
- 인스턴스 생성, 네트워크 구성, 스토리지 설정 등과 같은 인프라 리소스를 관리함
② 서비스 배포 및 관리
- AWS Lambda 함수, Amazon S3 버킷 등과 같은 AWS 서비스를 배포하고 관리함
③ 보안 및 엑세스 제어
- IAM(Identity and Access Management) 사용자, 그룹 및 권한 설정과 같은 보안 및 엑세스 관리 작업을 수행
④ 데이터 처리
- Amazon DynamoDB 테이블, Amazon Redshift 클러스터 등과 같은 데이터 관련 작업을 수행
⑤ 로그 및 모니터링
- AWS CloudWatch 로그 및 메트릭을 검색하고 모니터링함
2. Docker
1) Docker
- 컨테이너 기반 애플리케이션의 배포, 관리 및 실해응ㄹ 지원하는 서비스
- Docker는 애플리케이션과 해당 종속성을 포함한 가볍고 격리된 실행 환경을 제공하는 오픈 소스 컨테이너 플랫폼
2) 이미지(Image)와 컨테이너(Container)
① 이미지(Image)
- 애플리케이션과 모든 종속성(라이브러리, 실행 파일, 설정 등)을 포함한 읽기 전용 템플릿
- 컨테이너를 생성하는 데 사용
- Docker 이미지는 Dockerfile이라는 텍스트 파일에 정의되며, 이 파일에는 애플리케이션 구성과 종속성을 설명하는
명령어가 포함됨
- Docker 이미지는 여러 개의 계층(layers)으로 구성되며, 각 계층은 이전 계층을 기반으로 변경 및 추가된 사항을 나타냄
- 이미지는 Docker 레지스트리에 저장되거나 이미지를 공유하기 위해 사용될 수 있음
② 컨테이너(Container)
- Docker 이미지를 기반으로 생성되어 실행 중인 인스턴스
- 컨테이너는 격리된 환경에서 독립적으로 실행되며, 애플리케이션과 해당 종속성을 실행할 수 있는 환경을 제공
- 각 컨테이너는 고유한 파일 시스템, 프로세스 공간, 네트워크 인터페이스 등을 가지며,
호스트 시스템 또는 다른 컨테이너와 격리되어 작동
- 컨테이너는 이미지를 기반으로 생성되므로 필요한 만큼의 컨테이너를 빠르게 생성하고 중지할 수 있
- 또한, 각 컨테이너는 독립적으로 관리되므로 개별 컨테이너에 대한 설정, 모니터링 및 관리 작업이 가능
3) Docker LIFE CYCLE
① 생성(Create)
- Docker 이미지를 기반으로 컨테이너를 생성
- 이미지는 컨테이너가 실행될 때 사용할 애플리케이션 및 종속성을 포함
② 실행(Start)
- 생성된 컨테이너를 실행
- 컨테이너는 호스트 머신에서 격리된 환경에서 독립적으로 실행
- 실행된 컨테이너는 컨테이너 내부의 애플리케이션을 실행하고 외부와의 통신을 수행할 수 있음
③ 일시 정지(Pause)
- 실행 중인 컨테이너를 일시적으로 정지시킴
- 컨테이너의 상태는 일시적으로 중단되지만 메모리 상태 등은 유지
- 컨테이너를 다시 시작하면 일시 정지 상태에서 실행 상태로 돌아감
④ 재시작(Restart)
- 실행 중인 컨테이너를 재시작함
- 재시작 후에는 동일한 상태와 구성으로 다시 실행됨
⑤ 정지(Stop)
- 실행 중인 컨테이너를 정지시킴
- 컨테이너는 종료되며 실행 중인 애플리케이션도 중지
- 정지된 컨테이너는 필요에 따라 다시 시작될 수 있음
⑥ 제거(Remove)
- 컨테이너를 완전히 제거함
- 컨테이너가 더 이상 필요하지 않을 때 사용됨
- 제거된 컨테이너는 시스템에서 완전히 삭제됨
3) Docker 네트워크(Network)
① 도커 네트워크 생성
- Docker 네트워크를 생성하면 가상 네트워크가 호스트 시스템 위에 생성
- 네트워크는 고유한 이름과 식별자를 가지며, 컨테이너가 해당 네트워크에 참여할 수 있
② 컨테이너 연결
- Docker 네트워크에 속한 컨테이너는 네트워크를 통해 서로 통신할 수 있
- 동일한 네트워크에 속한 컨테이너는 호스트 이름을 사용하여 서로 찾고 통신할 수 있음
③ 네트워크 드라이버
- Docker는 다양한 네트워크 드라이버를 제공
- 기본적으로 "bridge" 네트워크 드라이버가 사용되며, 컨테이너에 자동으로 IP 주소를 할당하여 호스트와 통신
- 그 외에도 "host", "overlay", "macvlan" 등 다양한 네트워크 드라이버를 사용할 수 있
④ 컨테이너 간 분리
- Docker 네트워크는 컨테이너 간에 네트워크 분리를 제공
- 각 컨테이너는 격리된 네트워크 스택을 가지며, 다른 컨테이너와 격리된 환경에서 실행
⑤ 외부 연결
- Docker 네트워크는 컨테이너와 호스트 시스템 또는 외부 네트워크 간의 통신을 가능하게
- 컨테이너는 네트워크 포트 매핑을 통해 호스트 시스템의 특정 포트와 연결할 수 있음
4) Docker Compose
- 멀티 컨테이너 애플리케이션을 정의, 구성 및 실행하기 위한 도구
- Docker Compose를 사용하면 YAML 파일을 작성하여 여러 컨테이너를 하나의 서비스로 정의하고,
한 번에 실행 및 관리할 수 있음
- Docker Compose 특징
① 애플리케이션 정의
- Docker Compose는 YAML 파일을 사용하여 멀티 컨테이너 애플리케이션의 구성을 정의
- 파일에는 각 컨테이너의 이미지, 환경 변수, 포트 매핑, 볼륨 마운트 등의 설정이 포함됨
② 단일 명령 실행
- Docker Compose를 사용하면 단일 명령으로 애플리케이션을 구성하고 실행할 수 있
- Compose 파일을 기반으로 Docker Compose 명령을 실행하면 정의된 모든 컨테이너가 자동으로 시작
③ 서비스 간 통신
- Docker Compose를 사용하면 정의된 서비스 간에 편리하게 통신할 수 있
- 각 서비스는 고유한 이름을 가지며, 이를 사용하여 서비스 간의 네트워크 연결을 설정할 수 있음
④ 환경 변수 및 볼륨 관리
- Docker Compose는 애플리케이션의 환경 변수 설정과 볼륨 마운트를 관리하기에 용이
- Compose 파일에서 각 컨테이너에 대한 환경 변수와 볼륨 설정을 지정할 수 있음
⑤ 확장성
- Docker Compose를 사용하면 애플리케이션을 쉽게 확장할 수 있
- Compose 파일을 수정하여 새로운 서비스를 추가하거나 기존 서비스의 인스턴스 수를 조정할 수 있음
5) Docker 특징
① 유연성과 이식성
- Docker 컨테이너는 애플리케이션과 그 종속성을 패키징하여 독립적이고 이식성이 뛰어난 단위로 만듬
- AWS의 Docker 지원 서비스를 사용하면 이러한 컨테이너를 쉽게 배포하고 실행할 수 있
② 확장성
- Docker는 애플리케이션을 여러 개의 독립적인 컨테이너로 분할할 수 있으므로, 애플리케이션의 부하에 따라
필요한 만큼 컨테이너를 확장하거나 축소할 수 있음
- 이는 애플리케이션의 성능과 가용성을 향상시킬 수 있
③ 빠른 배포 및 롤백
- Docker 컨테이너는 빠른 배포와 롤백을 지원하므로, 애플리케이션의 변경사항을 신속하게 배포하고
문제가 발생할 경우 이전 상태로 롤백할 수 있
④ 마이크로서비스 아키텍처 지원
- Docker는 서비스를 작은 단위로 분해하는 마이크로서비스 아키텍처를 구축하기에 이상적
- 이를 통해 각 서비스를 격리하여 독립적으로 개발, 배포 및 확장할 수 있음
3. AWS Serverless
1) AWS Serveless Computing
- 서버리스 컴퓨팅을 위한 Amazon Web Services의 클라우드 서비스
- 애플리케이션을 개발하고 배포할 때 서버 인프라를 직접 관리할 필요 없이 코드 실행에 초점을 맞출 수 있는 방식 제공
2) AWS Serverless 관련 개념 및 특징
① AWS Lambda
- AWS Lambda는 서버리스 컴퓨팅 플랫폼
- 코드를 실행하기 위한 서버를 프로비저닝하거나 관리할 필요 없이 개발자가 작성한 코드를 실행할 수 있음
- 이벤트 기반 아키텍처로 동작하며, 트리거 이벤트 발생 시 자동으로 코드를 실행하여 응답
② 이벤트 트리거
- AWS Serverless 애플리케이션은 다양한 이벤트 소스에서 트리거될 수 있음
③ 스케일링 및 탄력성
- 서버리스 환경에서는 애플리케이션의 스케일링과 탄력성을 자동으로 관리할 수 있
- Lambda 함수는 필요에 따라 자동으로 확장되고 축소되며, 트래픽에 따라 자원을 동적으로 할당하여
애플리케이션의 성능을 유지함
④비용 효율성
- 서버리스 아키텍처는 사용한 리소스에 대해서만 비용을 지불하므로, 효율적인 비용 관리가 가능
- 함수 실행 시간과 메모리 사용량에 따라 비용이 결정되며, 사용하지 않는 상태에서는 비용이 발생하지 않
⑤ 다양한 서비스 통합
- AWS Serverless는 다양한 AWS 서비스와의 통합을 지원함
'개발 > 클라우드(with amazon)' 카테고리의 다른 글
[클라우드] 6. CI / CD (0) | 2023.05.17 |
---|---|
[클라우드] 5. S3 (0) | 2023.05.17 |
[클라우드] 4. IAM (0) | 2023.05.17 |
[클라우드] 3. Network (0) | 2023.05.16 |
[클라우드] 2. DB (SQL vs NoSQL, Amazon Relational Database Service, Amazon DocumentDB) (0) | 2023.05.16 |