AWS Lambda이다.함수 생성 시 다음과 같이 세 개의 생성 유형을 고르게 된다. 
블루 프린트를 사용하면 간단한 예시 코드가 나오게 된다. console.log('Loading function');
exports.handler = async (event, context) => {
//console.log('Received event:', JSON.stringify(event, null, 2));
console.log('value1 =', event.key1);
console.log('value2 =', event.key2);
console.log('value3 =', event.key3);
return event.key1; // Echo back the first key value
// throw new Error('Something went wrong');
};
코드-> Test 버튼을 통해 Test Event를 작성할 수 있게 된다. Deploy를 누르게 되면 코드를 사용할 수 있도록 배포된트리거 설정이 가능한데 만약 S3에 설정을 하고 싶다면 S3 해당 버킷에서 이벤트 알림 -> 이벤트 알림 생성을 선택한다. 이후 이벤트 유형에서 객체 생성 타입을 선택해야 하는데 해당 이벤트는 전송, 개시, 복사, 멀티파트 업로드 완료가 있다. 선택한 이벤트가 발생할 때 하단의 대상에서 선택한 lambda 함수를 같이 실행되도록 만들어 줄 수 있다.
s3-lambda-test-01가 실행되는 것을 알 수 있다.CloudWatch -> 로그 그룹을 통해 볼 수 있다.
가상화는 한 대의 PC에 논리적으로 공간을 분리해 여러 개의 서비스를 띄울 수 있게 만든 기술이다. Hypervisor라는 기술을 통해 하나의 OS에서 여러 개의 OS를 설치할 수도 있고, 여러 개의 애플리케이션을 별도의 공간에 설치**할 수도 있다.Linux에서 Container를 제어하는 LXC(LinuX Containers) 기술인데 이 기술을 기반으로 Docker가 나오게 됐다.Docker가 굉장히 많은 컨테이너를 키울 수 있는데 이런 경우 복잡도가 높아져 Kubernetes Deployment(쿠버네티스)를 사용하고 있다.
(사진 출처: https://smjeon.dev/etc/docker-overview/)
Docker는 애플리케이션을 신속하게 구축, 테스트 및 배포할 수 있는 플랫폼으로 소프트웨어를 컨테이너라는 표준화된 유닛으로 패키징한다. Docker의 주 기능이다. 이미지 (image): 파일 (file)을 빌드해서 이미지화하여 이를 이용해 컨테이너 (Container) 생성한다. 컨테이너 목적에 맞는 여러 개의 계층으로 된 바이너리 파일과 의존성이 설치되어 있다.컨테이너 (Container): 호스트와 다른 컨테이너로부터 격리된 시스템 자원과 네트워크를 사용하는 프로세스이다. 이미지는 읽기 전용으로 사용해 변경 사항이 컨테이너 계층에 저장되기 때문에 컨테이너에서 무엇을 하든 이미지는 영향을 받지 않는다.
git과 명령어가 비슷함. 이미지화 시킬 때는 Docker build라는 명령어를 실행한다.Docker push 받을 때는 Docker pull을 사용한다.Docker run을 사용한다. 1. container 생성 및 실행
run: container 생성 및 실행
stop: container 중지
start: container 실행
restart: container 재실행
2. container 관리
ps: container 확인
rm: container 삭제
3. container 실행 관리
logs: container log 확인
exec: container 명령어 수행
4. image 관리
images: image 확인
rmi: image 삭제
pull: image 다운로드
push: image 업로드
tag: image 태그 지정
Dockerfile이라고 설정해야 한다.#베이스 이미지를 몇 버전으로 할 건지
FROM adoptopenjdk/openjdk11
CMD ["./mvnw", "clean", "package"]
#JAR_FILE_PATH라는 변수에 .jar 파일의 위치를 넣어 준다.
ARG JAR_FILE_PATH = build/libs/config-0.0.1-SNAPSHOT.jar
#해당 .jar 파일의 위치를 copy해 준다.
COPY ${JAR_FILE_PATH} config-0.0.1-SNAPSHOT.jar
ENTRYPOINT ["java", "-jar", "config-0.0.1-SNAPSHOT.jar", "-Dspring.profiles.active-local"]
FROM: 이미지를 어디서 시작할 건지 설정한다. (베이스 이미지)
COPY : build 중간에 호스트 파일 또는 폴더를 이미지에 가지고 오는 것.
CMD: 컨테이너가 생성되었을 때 실행할 실행 파일이나 셀 스크립트
ENTRYPOINT: 컨테이너를 시작할 때마다 실행할 실행 파일이나 셀 스크립트.
만약 하나 이상의 Docker 파일을 다루고 싶을 경우 Docker compose를 사용해 주어야 하고 docker-compose.yml 파일이 루트 위치에 있어야 한다.
docker build -t (애플리케이션 이름):(태그) (docker 파일이 있는 위치)
.으로 대체가 가능하다.-t는 태그 옵션을 주는 것이다.docker images
docker ps
Docker에 실행된 프로세스가 있는지 확인할 수 있다.docker run -d (애플리케이션 이름):(태그)
컨테이너화해서 실행한다고 할 때 사용하는 명령어이다.-d는 백그라운드로 실행될 수 있도록 하는 명령어이다.docker stop (종료할 컨테이너 ID)
stop 명령어이다.docker kill (종료할 컨테이너 ID)
docker-compose up -d
docker-compose.yml에 있는 인스턴스들이 모두 실행된다.docker ps를 통해 동일하게 확인 가능하다.대시보드 제공경보 (알림), 장애가 발생했을 때 별도의 서버를 띄우는 작업도 진행 (Auto Scaling)로그 관리 및 분석을 하고, S3를 통해 로그 데이터를 내보내 다른 시스템에 활용 가능지표 제공특정 실시간 이벤트에 대해 스트림을 제공CloudWatch 내에서 리소스를 측정하고 진단 가능인사이트 제공DevOps란?소프트웨어 개발과 운영의 합성어Devops의 역할Soft Skill
- 사회 기술, 의사소통 기술, 성격 또는 성격 특성, 태도, 직업 속성, 소셜 인텔리전스 및 감성 인텔리전스 지수 등의 조합
Technical Skill
Go, Python 등 능숙하게 다룰 수 있는 언어가 있어야 함Linux와 같은 운영체제를 능숙하게 다루고 개념을 알아야 함자동화 도구를 다룰 수 있어야 함퍼블릭 클라우드를 능숙하게 다루고 직접 구축 및 설계할 수 있어야 함
DevOps의 역할에 Data Engineering과 Machine Learning이 추가
Build, Deploy, Monitor 과정을 자동화하는 역할을 한다.MLOps의 영역이다.
ECR이라고 하고 ECR에 저장된 이미지를 기반으로 가상화된 서비스를 제공하는 것이 ECS이다.ECR 작업 시에는 권한에 대한 문제가 발생할 수 있으므로 IAM 사용자 정책에서 ECR에 full access 할 수 있는 권한을 부여해 주어야 한다.
aws ecr get-login-password --region ap-northeast-2 | docker login --username AWS --password-stdin 174170816230.dkr.ecr.ap-northeast-2.amazonaws.comdocker build -t pop-config-serverdocker tag pip-config-server:latest 174170816230.dkr.ecr.ap-northeast-2.amazonaws.com/pip-config-server:latestdocker push 74170816230.dkr.ecr.ap-northeast-2.amazonaws.com/pip-config-server:latestECS 서비스와 연동해 주기 위해서는 ECS -> 태스트 정의 및 컨테이너 구성에서 컨테이너 정보의 이미지 URL에 리포지토리 주소를 넣어 주어야 한다. 이때 환경은 AWS fargate(서버리스)를 선택해 주면 된다. 태스크 정의가 끝났다면 태스크 등록을 클러스터로 들어가 해 주어야 한다.별도의 ELB를 구성해야 한다. (직접 접속은 불가능) ECS를 연결해 주면 된다.Gateway 역할을 할 수 있는 서버리스 서비스이다.Lambda가 들어가는 트리거 역할을 한다.API를 생성 및 관리가 가능하다.API Gateway 생성
API 생성 화면으로 넘어가게 된다.최적화된 에지와 프라이빗으로 선택할 수 있게 나누어져 있다.리소스를 추가해 줄 수 있다. (method들 추가 가능)Lambda 서비스를 추가했다면 다음과 같이 개요에 API Gateway와 연결된 것을 확인할 수 있다. 
✔ 개인적으로
Docker File의 명령어를 간략하게 설명을 해 주어서CMD와ENTRYPOINT는 같은 컨테이너의 실행 시 실행 파일을 호출해 주는 부분인데 차이를 알 수 없어 이 부분을 따로 공부하여 추가하였다.
1. Docker File 명령어
- CMD
- 컨테이너가 생성할 때만 실행되는 명령어
Docker runDockerfile에 여러 번 작성될 수 있지만 마지막 명령어 하나만 실행된다. (추가된 명령어가 기존 설정된 명령어를 수정하기 때문에)#CMD 양식 CMD ["command", "parameter1", "parameter2"]
- ENTRYPOINT
- 컨테이너가 시작할 때마다 실행되는 명령어
Docker start#ENTRYPOINT 양식 ENTRYPOINT ["command", "parameter1", "parameter2"]
- LABEL
- 이미지에 메타 데이터를 추가하는 명령어
- key-value 형태
- RUN
- 명령어를 실행할 때마다 새로운 레이어가 생성
- 새 레이어에 명령어를 실행하고 새로운 이미지 생성
- EXPOSE
- 생성된 이미지를 특정 포트에 열어 주는 명령어EXPOSE 열어 줄 포트 주소 #(ex. 80)
- ADD
COPY명령어와 동일하게 build 중간에 호스트의 파일 또는 폴더를 이미지에 가지고 옴- 다만 일반 파일뿐 아니라
ADD를 사용하면 압축 파일도 사용할 수 있으므로 특수한 파일을 가지고 올 때 사용
이건 내가 들을 생각으로 기록해 두는 Docker 강의
📌 생활 코딩 - Docker 입문
📌 Udemy - Docker & Kubernetes : 실전 가이드