[부스트캠프 AI-Tech] 19주차 Day 1

LKM·2022년 7월 25일
0

✏️학습 정리


2-4. Cloud

  • 기존 웹, 앱 서비스
    • 자신의 컴퓨터로 서비스를 만듦

    • 이런 경우 자신의 컴퓨터가 종료되면 웹, 앱 서비스도 종료 → 서버실 직접 운영

    • 서버실 운영시 확장이 쉽지 않음

      —> 불편함을 해소하고자 Cloud 서비스 점점 발전

  • Cloud 서비스
    • Computing Service (Server)
      • 연산을 수행한느 서비스
      • 가상 컴퓨터, 서버
      • CPU, Memory, GPU 등 선택 가능
    • Serverless Computing
      • 서버 관리를 클라우드쪽에서 진행
      • 코드를 클라우드에 제출하면, 그 코드를 가지고 서버를 실행해주는 형태
      • 요청 부하에 따라 자동으로 확장 (Auto Scaling)
    • Stateless Container
      • Docker를 사용한 Container 기반으로 서버를 실행하는 구조
      • Docker Image 기반으로 서버 실행
      • Auto Scaling
    • Object Storage
      • 다양한 Object 저장소
      • API를 사용해 데이터에 접근 가능
      • 모델 pkl 파일, csv 파일, 실험 log 등 저장할 수 있음
    • Database (RDB)
      • 클라우드에서 제공하는 Database
      • 웹, 앱서비스와 데이터베이스가 연결되어 있는 경우가 많으면 대표적으로 MySQL, Postgresql 등을 사용
    • Data Warehouse
      • Database에 저장된 데이터는 서비스가 메인
      • Database에 있는 데이터, Object Storage에 있는 데이터 등 모두 모아서 저장
      • 데이터 분석에 특화된 Database
    • AI Platform
      • AI Research, AI Develop 과정을 더 편리하게 해주는 제품
      • MLOps 관련 서비스 제공
    • 클라우드 회사 비교

2-5. Github Action을 사용한 CI_CD

  • 개발 프로세스
    • Local
      • 각자의 컴퓨터에서 개발
      • 환경을 통일시키기 위해 Docker 등 사용
    • Dev
      • Local에서 개발한 기능을 테스트할 수 있는 환경
      • Test 서버
    • Staging
      • Production 환경에 배포하기 전에 운영하거나 보안, 성능 측정하는 환경
      • Staging 서버
    • Production
      • 실세 서비스를 운영하는 환경
      • 운영 서버
    • 환경을 나누는 이유 → 실제 운영중인 서비스에 장애가 발생하면 안됨
    • Git Flow
  • CI/CD

    • CI (Continuous Integration)
      • 지속적 통합
      • 새롭게 작성한 코드 변경 사항이 Build, Test 진행한 후 Test Case에 통과했는지 확인
      • 지속적으로 코드 품질 관리
    • CD (Continusous Deploy/Delivery)
      • 지속적 배포
      • 작성한 코드가 항상 신뢰 가능한 상태가 되면 자동으로 배포될 수 있도록 하는 과정
      • CI 이후 CD 진행
    • 간략히 하면
      • CI: 빌드, 테스트 자동화
      • CD: 배포 자동화
    • 도구: Jenkins, circleci, Travis CI, AWS CodeDeploy, GCP Cloud Build, Github Action 등…
  • Github Action

    • Github에서 출시한 기능, 소프트웨어 Workflow 자동화를 도와주는 도구
    • 예시
      • Test Code
        • Unit Test, End to End Test 등..
      • 배포
        • Prod, Staging, Dev 서버에 코드 배포, 다양한 언어 배포 지원
      • 파이썬, 쉘 스크립트 실행
        • Github Repo에 저장된 스크립트를 일정 주기로 실행
      • Github Tag, Release 자동으로 설정
        • Main 브랜치에 Merge 될 경우에 특정 작업 실행
        • 새로운 브랜치 생성시 특정 작업 실행도 가능
      • Public Repo일 경우 무료
      • 핵심개념
        • Workflow
          • 여러 Job으로 구성되고 Event로 Trigger(실행)된느 자동화된 Process
          • 최상위 개념
        • Event
          • Workflow를 Trigger하는 특정 행동, 규칙
          • e.g.) 특정 Branch로 Push하는 경우, 특정 Branch로 Pull Request하는 경우
        • Jobs
          • Runner에서 실행되는 Steps의 조합
          • 여러 Job이 있는 경우 병렬로 실행, 순차적으로 실행할 수 도 있다.
        • Steps
          • Step은 Job에서 실행되는 개별 작업
          • Action을 실행하거나 쉘 커맨드 실행
          • 하나의 Job에서 데이터 공유 가능
        • Actions
          • Workflow의 제일 작은 단위
          • Job을 생성하기 위해 여러 Step을 묶은 개념
        • Runner
          • Github Action도 일종의 서버에서 실행되는 개념
          • Workflow가 실행될 서버
profile
함께 자라기

0개의 댓글