처음 시작하는 Infrastructure as Code: AWS & 테라폼을 수강하며 정리한 내용입니다.
DevOps 엔지니어의 역할
- 올바른 DevOps 문화를 위해 서비스 혹은 S/W LifeCycle에서 반복적인 일들을 자동화하고, 기술적 문제 혹은 팀의 차이를 기술적으로 예방하고, 해소시키는 사람
- 효율성을 위해 DevOps 엔지니어링에 관련된 기술을 다양한 곳에 접목하는 것
DevOps 엔지니어의 요구 스킬
Soft Skill
- 사람들이랑 조화를 이뤄 협업을 잘하고 문제를 정확히 이해해서 적절한 결정과 판단을 하는 것
- Soft Skill의 하위 요소
- 문제 인식: 문제가 무엇이 있는지, 정확한 원인이 무엇인지 파악해야 함
- 선택과 집중: 문제를 적합한 방법을 통해 해결하고, 해결의 우선순위를 올바르게 설정
- 결정: 수많은 선택지에 대해서, 추측이 아닌 확신을 가지고 빠르게 결정
- 업의 속성: 좋은 결정을 내리려면 제공하는 서비스의 본질과 가치를 이해해야 함
- 사용자: 사용자를 이해하고, 요구사항에 대해서 빠르게 피드백 제공
Technical Skill
- 특정 일을 효과적으로 수행하기 위한 지식과 능력
- Technical Skill의 하위 요소
- 프로그래밍: 다룰 수 있는 언어가 있어야 함
- 운영체제: Linux와 같은 운영체제를 능숙하게 다루는 것과 개념을 반드시 알아야 함
- ex) Shell, OS metrics, File system, 7 Layers
- 서버 관리: 서버를 관리하는 기술과 운영 지식을 통해 신뢰할 수 있는 서비스를 구축
- ex) IaC, CI/CD, API, 가용성, 성능
- 오픈소스: 인프라를 이루는 S/W들을 이해하고, 자동화 도구들을 다룰 수 있어야 함
- ex) nginx, Tomcat, MySQL, Redis, Ansible, Terraform
- 클라우드: 퍼블릭 클라우드를 능숙하게 다루고, 직접 구축 및 설계를 할 수 있어야 함
IaC
- Infrastructure as Code, 코드로서의 인프라, 코드형 인프라
- 인프라를 이루는 서버, 미들웨어, 서비스 등 인프라 구성 요소들을 코드를 통해 구축하는 것
- IaC는 코드로서의 장점은 작성 용이성, 재사용성, 유지보수
- 테라폼은 많이 쓰이는 IaC로 인프라를 만들고, 변경하고, 기록하는 도구