16. DevOps

2023. 12. 8. 00:42· CS/클라우드컴퓨팅
목차
  1. DevOps
  2. What is DevOps?
  3. Amazon's Case
  4. Five Major Phases of Software Release
  5. CI / CD
  6. Continuous Integration (CI)
  7. Continous Delivery (CD)
  8. Continuous Deployment (CD)
  9. Benefits of CI/CD
  10. Github Actions
  11. Componenets of Github Actions

DevOps

What is DevOps?

DevOps

  • Creating automation for the entire build / test / release cycle
  • Allow development, test and production environments to be built, tested and deployed easily and systematically
  • Allow new components to be added automatically
  • DevOps = Culture + Practices + Tools

 

Amazon's Case

Amazon.com Monolith -> Microservices

  • develping faster than ever
  • However, many teams were still being slowed down by manual processes and workflows
  • Introduce automated actions and transitions
    • faster, safer, consistent & standardized, visualization of the process

 

Five Major Phases of Software Release

Source > Build > Test > Deploy > Monitor

 

Source

  • Checkin souce code, Peer Review

Build

  • Compile code, Unit test, Style checkers, Code metrics
  • Create container images

Test

  • Integration test, Load test, UI test, Penestration test

Deploy

  • Deployment to production environments

Monitor

  • Monitor code in production


CI / CD

Continuous Integration (CI)

Continuous Integration (CI)

  • integrating code from multiple developers into a central repository, multiple times per day
  • continually validating the state of a codebase through automated testing
    • ex, developers push code changes to Git repository, for every push you can create scripts to build and test automatically
  • best achieved through integration with version control
    • each change is built and tested automatically and continously

CI build consists of automated process:

  • Run automatic code quality scan, and generate a report
  • Build code and run any automated tests (mostly unit tests)
  • Generate and publish a test coverage report

 

Continous Delivery (CD)

Continuous Delivery

  • extension of continuous integration where code changes are automatically prepared for a release to production
  • expands CI upon deploying code changes to testing environment and running test and so on after build stage

 

Continuous Deployment (CD)

Continuous Deployment

  • every change is deployed to production automatically, without explicit approval from a developer
  • building, testing, and releasing software faster and more frequently
    • increase quality, reduce cycle time
  • Build + test + deploy continuously

Continuous Delivery: 소프트웨어를 지속적으로 릴리스 가능한 상태로 유지

Continous Deployment: 소프트웨어 변경사항이 자동으로 프로덕션 환경에 배포

 

Benefits of CI/CD

Higher quality

  • less bugs and are captured early by automated tests
  • developers are alerted as soon as they break a build

Low risk releases

  • integration issues have been solved early -> releasing is easire
  • deploy small batches of changes -> easy to fix

Lower costs

  • cost for fixing an issue in development phase is much lesser than in production
  • testing codes are reduced significantly

Better products

  • team can focus on what customers care about most - business logic, UX ..

Time to market faster

  • eveyrthing is automated
  • remove a large amount of re-work effort
  • customers see continuous stream of improvements and quality increases every day

Happier team 🤔

  • make releases are less painful

CI/CD Tools

- Jenkins is the most popular CI tools: open source, on-premise


Github Actions

GitHub Actions

  • CI/CD platform that allows you to automate your build, test, and deployment pipeline

Componenets of Github Actions

Workflow

  • configurable automated process that will run one or more jobs
  • defined by a YAML file and will run when triggered by an event in your repository, or they can be triggered manually, or at a defined schedule
  • .yml file in the.github/workflows directory

Event

  • specific activity in a repository that triggers a workflow run
  • activity can originate from GitHub when someone creates a pull request, open an issue, or pushes a commit to a repository
    • you can also trigger a workflow to run on a schedule, by posting to a REST API, or manually

Job

  • set of steps in workflow that is executed on the same runner
  • each step is either a shell script that will be executed, or an action that will be run
  • you can configure a job's dependencies with other jobs
    • by default, jobs have no dependencies and run in parallel with each other

Action

  • custom application that performs a complex but frequently repeated task
    • use an action to help reduce the amount of repetitive code
  • can pull your git repository from GitHub, set up correct toolchain for your build environment, or set up the authentication to your cloud provider
  • you can write your own actions, or you can find actions to use in your workflows in the GitHub Marketplace

Runner

  • runner is a server that runs your workflows when they're triggered
  • each runner can run a single job at a time
  • GitHub provides Ubuntu Linux, Microsoft Windows, and macOS runners
  • each workflow run executes in a fresh, newly-provisioned virtual machine
저작자표시 (새창열림)

'CS > 클라우드컴퓨팅' 카테고리의 다른 글

18. Cloud-Based AI  (0) 2023.12.09
17. MapReduce  (0) 2023.12.08
15. Reliability and Availability  (1) 2023.12.07
14. Container  (0) 2023.12.07
12, 13. Virtualization  (0) 2023.12.07
  1. DevOps
  2. What is DevOps?
  3. Amazon's Case
  4. Five Major Phases of Software Release
  5. CI / CD
  6. Continuous Integration (CI)
  7. Continous Delivery (CD)
  8. Continuous Deployment (CD)
  9. Benefits of CI/CD
  10. Github Actions
  11. Componenets of Github Actions
'CS/클라우드컴퓨팅' 카테고리의 다른 글
  • 18. Cloud-Based AI
  • 17. MapReduce
  • 15. Reliability and Availability
  • 14. Container
호프
호프
호프
Untitled
호프
전체
오늘
어제
  • 분류 전체보기 (341)
    • 오류😬 (4)
    • 스터디📖 (96)
      • 웹 개발 기초 (8)
      • Spring (20)
      • ML, DL (30)
      • Node.js (22)
      • React (0)
      • 블록체인 (12)
      • Go (3)
      • Javascript (1)
    • 알고리즘💻 (153)
      • 그리디 (23)
      • Bruteforce&Backtracking (16)
      • DP (17)
      • 이분탐색&정렬&분할정복 (17)
      • 누적합&투포인터 (6)
      • 스택&큐&덱 (19)
      • 그래프(DFS&BFS) (19)
      • 트리 (7)
      • 우선순위큐&다익스트라 (11)
      • 벨만포드&플로이드와샬 (8)
      • map&set&number theory (5)
      • 기타 (5)
    • 프로젝트 (3)
      • 캡스톤 디자인 프로젝트 (3)
    • 블록체인🔗 (3)
      • Solana (2)
      • 개발 (0)
      • Harmony (1)
    • ASC (6)
    • CS (73)
      • 데이터베이스 (12)
      • 클라우드컴퓨팅 (21)
      • 운영체제 (11)
      • 컴퓨터네트워크 (14)
      • 블록체인응용 (15)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 복습

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.1
호프
16. DevOps
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.