DevOps의 기본적인 이해
데브옵스의 5가지 철학
1. 문화 (culture) : 데브옵스를 통해 하나의 문화를 만들어간다.
: 사람 -> 팀 / 인원 / 가치 / 의사소통
2. 자동화 (Automation): 자동화를 통해 효율성과 빠른 속도를 지향한다.
: 업무의 자동화 -> 속도/안정성 , 재사용 가능한 인프라 생성
3. 측정 (Measurement): 지표를 측정하여 지속적으로 개선해 나간다.
: 예측 불가능한 영역을 예측 가능한 영역으로 !
: 변경사항 발생 시 항상 측정
: 어플리케이션 성능, 개발 속도 모니터링
: 지속적으로 나아지고 있는지, 아닌지를 측정 ! 추측 배제
4. 공유 (Sharing) : 공유를 통해 함께 발전해 나간다.
: 언제든 접근 가능한 투명한 데이터
: 지식의 공유 Open Mind
: 일의 가속도
: 문제 발생시 함께 해결
5. 측정 (File up & Pile up) : 기록을 축적하여 자산을 만들어 나간다.
데브옵스는 어떤 요구사항을 효율적으로 만족시키기 위하여 이를 자동화하며 변경사항 지표들을 측정하고, 공유하고, 이 모든 결과물들을 축적해 나아가는 문화를 만들어가는 철학, 방법론 기술
DevOps 엔지니어의 역할
DevOps 엔지니어
: 올바른 **DevOps 문화**를 위해 서비스 혹은 S/W Life Cycle에서 반복적인 일을 **자동화**하고, 기술적 문제 혹은 팀의 차이를 **기술적으로 예방하고, 해소**시키는 사람
엔지니어의 역량에 따라 할 수 있는 일들이 달라짐
주로 하는 일
- 파이프라인 구성
- 빌드 자동화
공통된 기술을 다양한 곳에 적용하기
DevOps 엔지니어 요구 스킬
- Soft Skill
- 문제 인식 : 정확한 해결책을 찾을 수 있도록 무엇이 문제인지 정확한 원인을 파악할 수 있어야 함
- 선택과 집중 : 문제를 적합한 방법을 통해 해결하고, 해결의 우선순위를 올바르게 설정해야 함
- 결정 : 수많은 선택지에 대해서 추측이 아닌 확신을 가지고 빠르게 결정해야 함
- 업의 속성 : 제공하는 서비스의 본질과 가치를 이해해야 함
- 사용자 : 사용자를 이해하고, 요구사항에 대해서 빠르게 피드백을 해야 함
- Technical Skill
- 프로그래밍 : 능숙하게
- 운영체제 : Linux와 같은 운영체제를 능숙하게 다루기 + 개념
: ex) Shell, os metrics, file system, 7 layers
- 서버관리 : 다수의 서버를 효율적으로 관리하는 방법
: ex) IaC, CI/CD, API, 가용성, 성능 등
- 오픈소스 : 인프라를 이루는 SW들을 이해하고 자동화 도구들을 다룰 수 있어야함
: ex) nginx, Tomcat, MySQL, Redis, Ansible, Terraform 등
- 클라우드 : 퍼블릭 클라우드를 능숙하게 다루고, 직접 구축 및 설계 할 수 있어야함
: ex) AWS, GCP, Azure
IaC : Infrastructure as Code
코드로써의 인프라. 인프라 구성요소들을 코드를 통해 구축하는 것
( 인프라 : 인프라를 이루는 서버, 미들웨어 그리고 서비스 등 )
IaC의 장점 : 작성용이성, 재사용성, 유지보수 등