2022/04/22

jungkwanlee·2022년 4월 22일
0

코딩일지

목록 보기
23/108
post-thumbnail

1) 학습한 내용

DEVOPS와 CI/CD

데브옵스란?

DevOps는 애플리케이션과 서비스를 빠른 속도로 제공할 수 있도록 조직의 역량을 향상시키는 문화 철학, 방식 및 도구의 조합이다. 기존의 소프트웨어 개발 및 인프라 관리 프로세스를 사용하는 조직보다 제품을 더 빠르게 혁신하고 개선할 수 있다. 이러한 빠른 속도를 통해 조직은 고객을 더 잘 지원하고 시장에서 좀 더 효과적으로 경쟁할 수 있다.

CI/CD란?

DevOps조직문화의 생명은 Speed와 Iteration에 있습니다. 즉, 비즈니스의 요구에 적시에 대처하고 지속적인 개선을 할 수 있어야 한다.

이를 가능하기 위해서는 CI(Continuous Integration-지속통합)와 CD(Continuous Deployment-지속배포)가 자동화 될 필요가 있다.

다시말해, 각 개발자의 개발 결과가 자동으로 통합되고 배포하는 과정이 물 흐르듯이 연속적으로 이루어져야 한다는 것이다.

CI는 소스업로드에서 배포Image 업로드까지의 과정을 의미합니다. Commit -> Unit Test -> Integration Test -> 소스 정적분석 -> 배포Image 빌드 -> 배포Image 보안검사 -> Image 저장소 업로드의 단계를 거친다.

CD는 배포Image를 개발계 배포 -> 검증계 배포 -> 시스템/성능/인수 테스트 -> 운영계 배포까지의 단계를 거친다.

DEVOPS의 작동방식

DevOps 모델에서는 개발팀과 운영팀이 더 이상 "사일로"에 묶여 있지 않는다. 때로는 이 두 팀이 단일팀으로 병합되어 엔지니어가 개발에서 테스트, 배포, 운영에 이르기까지 전체 애플리케이션 수명 주기에 걸쳐 작업하고 단일 기능에 한정되지 않은 광범위한 기술을 개발한다.
일부, DevOps 모델에서 품질 보증팀과 보안팀 또한 애플리케이션 수명 주기에 걸쳐 개발 및 운영과 좀 더 긴밀하게 통합된다. DevOps 팀 전체가 보안을 중점으로 두는 경우 때때로 DevSecOps라고 불린다.
이러한 팀에서는 DevOps 방식을 사용하여 속도가 느리고 수동으로 수행되던 프로세스를 자동화한다. 또한, 애플리케이션을 안정적으로 빠르게 운영하고 개선하는 데 도움이 되는 기술 스택과 도구를 사용한다.
이러한 도구 덕분에 엔지니어는 이전 같았으면 다른 팀의 도움이 필요했을 코드 배포 또는 인프라 프로비저닝과 같이 작업을 독립적으로 수행할 수 있으며, 따라서 팀의 작업 속도가 더욱 빨라진다.

DEVOPS와 CI/CD와의 연계

CI/CD를 도입하면 버그가 거의 없이 빠른 속도로 코드와 애플리케이션을 제공할 수 있다. 따라서 CI/CD는 여러 접근 방식, 시스템, 도구의 필수적인 부분이 되었다. DevOps 방법론의 소프트웨어 개발 및 제공 내에서 CI/CD가 작동하는 방식을 예로 들 수 있다.

"DevOps"(소프트웨어 개발과 기술 운영이라는 용어의 조합)는 IT, 개발, 보안 및 품질 엔지니어링 같은 역할 간의 조율을 통해 더 나은 최종 제품과 개선된 고객 경험을 창출하는 방식을 말한다. DevOps는 부분적으로 Agile 소프트웨어 개발 방법론을 기반으로 하며 개발 수명주기를 단축하고 고품질 소프트웨어를 지속적으로 제공하도록 설계되었다.

CI/CD는 DevOps를 자연스럽게 보완한다. CI/CD 파이프라인을 통해 개발자는 변경 사항을 더 빠르게 푸시하는 동시에 애플리케이션 안정성을 보장할 수 있다. 제대로 구현된 CI/CD는 DevOps KPI(배포 빈도, 변경 리드 타임, 잠재적으로 피해를 줄 수 있는 사고 발생 후 평균 복구 시간 등)에 아주 긍정적인 영향을 미칠 수 있다.

ps. Dockers와 Kubernetes

Docker

Docker는 동명의 회사에서 개발하고 있는 리눅스 컨테이너(Linux Container)를 구현하고 관리하는 도구입니다. 리눅스 컨테이너는 리눅스 커널들의 기능(Cgroup, Namespaces, root 격리, 유니온 마운트)들을 조합해서 경량 가상화를 구현하는 기술이다.

Kubernetes

쿠버네티스는 컨테이너화된 워크로드와 서비스를 관리하기 위한 이식성이 있고, 확장가능한 오픈소스 플랫폼이다. 쿠버네티스는 선언적 구성과 자동화를 모두 용이하게 해준다. 쿠버네티스는 크고, 빠르게 성장하는 생태계를 가지고 있다. 쿠버네티스 서비스, 기술 지원 및 도구는 어디서나 쉽게 이용할 수 있다.

쿠버네티스란 명칭은 키잡이(helmsman)나 파일럿을 뜻하는 그리스어에서 유래했다. K8s라는 표기는 "K"와 "s"와 그 사이에 있는 8글자를 나타내는 약식 표기이다. 구글이 2014년에 쿠버네티스 프로젝트를 오픈소스화했다. 쿠버네티스는 프로덕션 워크로드를 대규모로 운영하는 15년 이상의 구글 경험과 커뮤니티의 최고의 아이디어와 적용 사례가 결합되어 있다.
-쿠버네티스란 무엇인가?-

참고자료

LainyZine: 프로그래머 가이드

CI/CD란?

DevOps란 무엇입니까?

2) 학습내용 중 어려웠던 점

Docker 계정을 만들고 난 뒤에 레퍼지토리를 만들 때, 걸리는 시간이 너무 오래 걸렸다.

3) 해결방법

깃허브에게 익숙한 나에게는 이렇게 오래 걸리는 도커 허브에 적응하기 어려웠고 무엇보다 레퍼지토리를 생성하는데 시간이 너무 오래 걸린다.

4) 학습소감

오전에는 DEVOPS와 CI/CD를 중심으로 이뤄졌었고 점심 이후로는 Docker를 통한 수업이 진행되었다. 나는 수업을 무난하게 잘 따라갔었지만 이번 수업에 가장 난관은 Docker hub의 레퍼지토리를 생성하는데 시간이 너무 오래걸린 점이었다.

0개의 댓글

관련 채용 정보