Docker
Container 기반의 경량화된 이미지를 통해서 제공하는 서비스이다. Docker를 사용하면 환경에 구애받지 않고 애플리케이션을 신속하게 배포 및 확장할 수 있으며, 모니터링 및 관리를 편하게 할 수 있다. Container가 많아지면 복잡도가 높아지는데, 이를 하나로 관리할 수 있는 서비스가 Kubernetes이다.
용어
이미지(Image)
이미지는 컨테이너를 생성할 때 필요한 요소로 컨테이너의 목적에 맞는 바이너리와 의존성이 설치되어 있다. 여러 개의 계층으로 된 바이너리 파일이다. 이미 존재하는 이미지가 많기 때문에 가져다 사용해도 되고, 직접 만들어도 된다.
컨테이너(Container)
호스트와 다른 컨테이너로부터 격리된 시스템 차원과 네트워크를 사용하는 프로세스이다. 이미지는 읽기 전용으로 사용하여 변경사항은 컨테이너 계층에 저장된다. 즉 컨테이너에서의 작업이 이미지에 영향을 끼치지 않는다.
명령어
Container 생성 및 실행
- Container 생성 및 실행 : run
- Container 중지 : stop
- Container 실행 : Start
- Container 재실행 : restart
Container 관리
- Container 확인 : ps
- Container 삭제 : rm
Container 실행 관리
- Container log 확인 : logs
- Container에 명령어 수행 : exec
Image 관리
- Image 확인 : images
- Image 삭제 : rmi
- Image 다운로드 : pull
- Image 업로드 : push
- Image 태그 지정 : tag
Docker File
- FROM : 베이스 이미지 설정, <이미지 이름>:<태그> 형식으로 설정
- METATAINER : 메인테이너 정보
- RUN : 쉘 스크립트 혹은 명령 실행, 이미지 생성 시에 실행
- CMD : 컨테이너가 실행되었을 때 실행할 실행 파일 또는 쉘 스크립트
- EXPOSE : 호스트와 연결할 포트 번호
- WORKDIR : CMD에서 설정한 실행 파일이 실행될 디렉터리
Java 예시
FROM openjdk:8-jdk-alpine
ARG JAR_FILE=build/libs/*.jar
COPY ${JAR_FILE} demo-0.0.1-SNAPSHOT.jar
ENTRYPOINT ["java","-jar","/demo-0.0.1-SNAPSHOT.jar"]
Docker-compose
여러 개의 Docker 파일을 관리하고 싶다면, docker-compose를 활용할 수 있다.
Serverless
Lambda
AWS lambda는 이벤트에 대한 응답으로 코드를 실행하고, 기본 컴퓨팅 리소스를 관리하는 서버리스 컴퓨팅 서비스이다. 이벤트에는 전자 상거래 웹 사이트에서 사용자가 장바구니에 항목을 배치하는 것과 같은 상태 변경 또는 업데이트가 포함될 수 있다. Amazon API Gateway를 통한 HTTP 요청, Amazon S3 버킷에 있는 객체에 대한 변경 사항, DynamoDB의 테이블 업데이트 등과 같은 다양한 이벤트에 대한 응답으로 코드를 자동 실행할 수 있다.
API Gateway
API Gateway는 규모와 관계없이 REST 및 WebSocket API를 생성, 게시, 유지, 모니터링 및 보호하기 위한 AWS 서비스이다. Lambda의 이벤트 트리거로 설정하여 HTTP 요청을 받았을 때, Lambda에 등록한 코드가 실행되도록 할 수 있다.
CloudWatch
CloudWatch는 애플리케이션을 모니터링하고 최적화할 수 있는 서비스이다. 트래픽, 서버 용량 등의 임계치를 설정하고, 임계치가 초과하면 알림을 받을 수 있다. 또한 모든 시스템에 대해 로그 관리를 할 수 있고, 분석에도 활용 가능하다.
DevOps
데브옵스는 소프트웨어 개발과 운영의 합성어로서 소프트웨어 개발자와 정보기술 전문가 간의 소통, 협업 및 통합을 강조하는 개발 환경이나 문화이다.
DevOps 엔지니어 역할
올바른 DevOps 문화를 위해 서비스 혹은 SW Life Cycle에서 반복적인 일을 자동화하고, 기술적 문제 혹은 팀의 차이를 기술적으로 예방하고 해소시킨다.
Soft Skill
사회 기술, 의사소통 기술, 성격, 태도, 소셜 인텔리전스 등의 조합으로 사람들이 환경을 탐색하고 다른 사람들과 일하는 능력을 이야기한다.
Technical Skill
특정한 일을 효과적으로 수행하는 지식과 능력을 이야기한다. IT 영역에서는 프로그래밍 언어 능력, SW 디자인, 데이터베이스 및 서버관리 등 특정한 기술의 지식과 수행능력을 예로 들 수 있다.
- 프로그래밍 언어
- 운영체제
- 서버관리
- 오픈소스
- 클라우드
MLOps
MLOps는 데이터 엔지니어링, ML, DevOps가 연결된 형태로 데이터 수집, 모델 학습, 테스트, 배포, 모니터링 과정의 파이프라인을 구성하는 것이다.
데이터 파이프라인
데이터 파이프라인을 구성할 때, 이러한 AWS 서비스가 활용된다는 정도만 알아두고 이후에 사용할 기회가 생기면 레퍼런스를 읽어보며 자세히 이해할 수 있도록 하자.
'[프로그래머스] 데이터 엔지니어링 데브코스 3기 > TIL(Today I Learn)' 카테고리의 다른 글
[TIL - 32일 차] 데이터 웨어하우스 관리와 고급 SQL과 BI 대시보드 (2) (0) | 2024.05.07 |
---|---|
[TIL - 31일 차] 데이터 웨어하우스 관리와 고급 SQL과 BI 대시보드 (1) (2) | 2024.05.06 |
[TIL - 29일 차] AWS 클라우드 (4) (2) | 2024.05.02 |
[TIL - 28일 차] AWS 클라우드 (3) (0) | 2024.05.01 |
[TIL - 27일 차] AWS 클라우드 (2) (0) | 2024.04.30 |