데브옵스는 소프트웨어의 개발과 운영의 합성어로서, 소프트웨어 개발자와 정보기술 전문가 간의, 소통, 협업 및 통합을 강조하는 개발 환경이나 문화를 말한다.
개발프로세스 v5
Developer->Git->CI->CD->Server->Monitoring
서비스의 빠른 개발 & 배포가 중요하고 개선하고 싶다면 고민하자
자동화 (시간 절약 -> 효율이 증가한다)
측정 (로그를 남기고 부하를 체크하자)
공유 (해결한 내용을 글로 공유하고 설정을 공유하자)
축적 (패시브 스킬, 효율 증가)
서버 배포 문서화하기
단점 : 문서의 정확성, 업데이트 여부
CHEF, PUPPET, ANSIBLE과 같은 상태 관리 도구
단점 : 러닝커브, 서버에 다른 버전 여러 개 설치시 막힘
가상화 (한 서버에 여러개 가상머신 설치)
단점 : 처음부터 다시 세팅한다면? 서버 이미지 공유는?
클라우드
하드웨어 파편화 문제 해결, 가상화된 환경만으로 아키텍처 구성 가능
PaaS
Vercel, Heroku, Netlify, AWS Elastic Beanstalk
서버를 운영하는 것은 복잡하고 어렵다
잘 구성해 놓은 곳에 소스 코드만으로 배포
일반화된 프로비저닝 방법을 제공 *(프로비저닝이란 IT 인프라를 설정하는 프로세스이자, 데이터와 리소스에 대한 액세스를 관리하는 데 필요한 단계)
PaaS의 단점
애플리케이션을 PaaS 방식에 맞춰야함
서버에 대한 원격접속 불가능
서버에 파일 시스템 사용 불가
서버 패키지 설치 못함
로그 수집 제한적 허용
PaaS에서 할 수 있는 것
크론잡
데이터 분석(BigQuery, S3 연동)
로그분석(엘라스틱 서치)
애플리케이션 성능 모니터링
A/B 테스트, Canary 배포
네트워크, 스토리지 설정
일일이 켜줘야 한다고?
여유 서버는 어떻게 확인할지
롤아웃/롤백에 손이 많이 가네
프록시 -> LoadBalancer -> WAS
복잡한 컨테이너 환경을 효과적으로 관리하기 위한 도구
컨테이너를 쉽고 빠르게 배포/확장하고 관리를 자동화해주는 오픈소스 플랫폼
더 작은 단위로 자주 배포하자
소스를 푸시하면 자동으로 빌드하자
테스트 서버 수를 늘리자
배포 권한을 확대하자
code -> git -> event -> build Job(branch) -> Docker
cd에 경우
Deploy Job -> Deploy
브랜치마다 도커 이미지를 만들어서 바로 배포 가능한 도커 이미지를 항시 보유한다.
테스크, QA를 하기 위해서 여러 개의 서버 중 원하는 서버를 사용하고 완료되면 종료
누가 몇 번 서버에서 어떤 브랜치를 테스트 중인지 Jenkins에서 확인
테스트 서버를 만들기 위해 GitOps를 사용하자, ArgoCD를 사용하자
깃 브랜치 별 젠킨스가 빌드를 해준다.
도커이미지와 빌드설정파일이 깃옵스로 만들어진다.
ArgoCD가 도커이미지와 빌드설정파일을 기반으로 쿠버네티스에 테스트 서버를 생성해준다.