본문 바로가기

데이터엔지니어링

[6주차] AWS 클라우드(4)

🙂 Docker

Docker 개요

https://aws.amazon.com/ko/docker

 

Docker란 무엇입니까? | AWS

Q: Docker로 어떤 작업을 할 수 있습니까? Docker를 사용하면 환경에 구애받지 않고 애플리케이션을 신속하게 배포 및 확장할 수 있으며 코드가 문제없이 실행될 것임을 확신할 수 있습니다. 이는 Doc

aws.amazon.com

🍦 Docker 설치


 Docker image

 

이미지 (Image)

  • 이미지는 컨테이너를 생성할 때 필요한 요소로 컨테이너의 목적에 맞는 바이너리와 의존성 설치.
  • 여러 개의 계층으로 된 바이너리 파일로 존재.

 

컨테이너 (Container)

  • 호스트와 다른 컨테이너로부터 격리된 시스템 자원과 네트워크를 사용하는 프로세스
  • 이미지는 읽기 전용으로 사용하여 변경사항은 컨테이너 계층에 저장
    => 컨테이너에서 무엇을 하든 이미지는 영향을 받지 않음.

Docker 구성도
Docker 라이프 사이클

 

🍦 Docker 주요 명령어

  1. container 생성 및 실행 관련 명령어
    • container 생성 및 실행: run
    • container 중지: stop
    • container 실행: start
    • container 재실행: restart
  2. container 관리 관련 명령어
    • container 확인: ps
    • container 삭제: rm
  3. container 실행 관리 관련 명령어
    • container log 확인: logs
    • container에 명령어 수행: exec
  4. image 관리 관련 명령어
    • image 확인: images
    • image 삭제: rmi
    • image 다운로드: pull
    • image 업로드: push
    • image 태그 지정: tag

 Docker File

 

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 파일을 띄우거나 관리.

예제사이트


🙂 ECS / ECR

image관련한 파일을 저장하는 레포지토리

 

 

https://aws.amazon.com/ko/ecr/

 

완전관리형 컨테이너 레지스트리 – Amazon Elastic Container Registry - Amazon Web Services

 

aws.amazon.com


🙂 Lambda

서버리스의 대표적인 서비스

(함수만 등록을 해서 서버가 서비스할 수 있도록)

 

Python 코드

import json
import boto3
from datetime import datetime

client = boto3.client('s3')


def lambda_handler(event, context):
    what_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
    bucket = event['Records'][0]['s3']['bucket']['name']
    key = event['Records'][0]['s3']['object']['key']
    try:
        response = client.get_object(Bucket=bucket, Key=key)
        
        text = response['Body'].read().decode()
        data = json.loads(text)
        
        if data['temperature'] > 40:
            print(f"Temperature detected : {data['temperature']}C at {what_time}")
            print("Be careful! It's getting really hot!!")
        else:
            print("So far so good")
    except Exception as e:
        print(e)
        raise e

🙂 DevOps

소프트웨어의 개발과 운영의 합성어

소프트웨어 개발자와 정비기술 전문가 간의 소통, 협업 및 통합을 강조하는 개발 환경이나 문화.

 

올바른 DevOps 문화를 위해 서비스 혹은 SW LifeCycle에서 반복적인 일을 자동화하고, 기술적 문제 혹은 팀의 차이를 기술적으로 예방하고, 해소.

 

  • Soft Skill
    • 사회 기술, 의사소통 기술, 성격 또는 성격 특성 등의 조합.
    • 환경을 탐색하고 다른 사람과 동화되는 능력
  • Technical Skill
    • 프로그램, 운영체제, 서버관리, 네트워크 등

 

🍦 MLOps

 

🍦 Data Pipeline