DevOps Engineer Roles and Responsibilities
DevOps Engineer가 갖추어야할 철학과 기술에 대하여 알아보아요
Reference: [인프런] DevOps : Infrastructure as Code with Terraform and AWS 강좌 by 송주영님
DevOps 엔지니어란?
올바른 DevOps 문화를 위해
service 혹은 S/W LifeCycle에서 반복적인 일들을 자동화하고,
기술적 문제 혹은 팀의 차이를 기술적으로 예방하고, 해소시키는 것을 담당하는 사람
DevOps Engineering에 관련된 공통된 기술들을 다양한 곳에 접목하는 역할을 하는 사람
DevOps Engineer의 요구 스킬
Soft skill
문제 인식
문제가 무엇이 있는지,
정확한 원인이 무엇인지 파악해야 한다
선택과 집중
문제를 적합한 방법을 통해 해결하고,
해결의 우선순위를 올바르게 설정한다
결정
수많은 선택지에 대해서, 추측이 아닌 확신을 가지고 빠르게 결정해야 한다
결정에는 기반자료가 있어야 한다
업의 속성
제공하는 서비스의 본질과 가치를 이해해야 한다
사용자
사용자를 이해하고,
요구사항에 대해서 빠르게 피드백 해야한다
빠른 피드백과 적용이 필요하다
Technical Skill
프로그래밍
Go, Python 등 능숙하게 다를 수 있는 언어는 큰 강점이 된다
ex) Go, Python, Node.js 등
아싸 Python!
운영체제
Linux와 같은 운영체제를 능숙하게 다루는 것과 개념을 반드시 알아야 한다
ex) Shell, OS metrics, File system, 7 layers 등
서버 관리
서버를 관리하는 기수로가 운영 지식을 통해 신뢰할 수 있는 서비스를 구축해야 한다
ex) IaC, Ci/CD, API, 가용성, 성능 등
오픈소스
인프라를 이루는 S/W 들을 이해하고, 자동화 도구를 다룰 수 있어야 한다
ex) nginx, Tomcat, MySQL, Redis, Ansible, Terraform 등
클라우드
Public Cloud를 능숙하게 다루고, 직접 구축 및 설계를 할 수 있어야 한다
ex) AWS, Azure, GCP, Alibaba 등
Infrastructure as Code, 코드로써의 인프라
인프라를 이루는 server, middleware, service 등 인프라 구성요소들을 code를 통해 구축하는 것
IaC는 코드로써의 장점
작성 용이성
재사용성
유지보수
문서화 등의 장점을 가진다
IaC 도구 Terraform
Terraform은 인프라를 만들고, 변경하고, 기록하는 IaC를 위해 만들어진 도구로써,
문법이 쉬워 비교적 다루기 쉽고
사용자가 매우 많아 참고할 수 있는 예제가 많다
AWS, Azure, GCP 같은 Public Cloud 뿐만이 아니라 다양한 서비스를 지원한다
DevOps 엔지니어의 덕목
최대한 상황에 대한 많은 경우의 수를 생각해야 한다
그 이후 코드에 반영하고 실행시에는 로그로 남기고 모니터링을 꾸준히 길게 해야한다
코드 실행 중 최대한 여러번 점검이 되어 조건이 다 일치했을 때 실제로 실행이 되도록 코드를 짜는 것도 중요하다
테스트 환경을 제대로 구축해야 한다
데브옵스 엔지니어가 되려면 특정 제품이나 기술을 아는 것으로는 부족하다
제품과 기술은 산업의 발전에 따라 항상 바뀐다
데브옵스 철학과 기반 라이프사이클에 대한 이해도 중요하다
따라서 데브옵스의 핵심인 지속적 배포와 지속적 통합 프로세스(CI/CD), 그리고 여기에 수반되는 소프트웨어 테스트를 이해해야 한다!
DevOps 엔지니어 스킬
기초 : 리눅스 관리, 파이썬, AWS 또는 다른 클라우드 플랫폼
구성 : 테라폼(Terraform) 또는 앤서블(Ansible)
버전 관리 : 깃(Git)과 깃허브(GitHub)
패키징 : 도커(Docker)
배포 : 젠킨스(Jenkins)
실행 : 아마존 ECS와 쿠버네티스
모니터링 : ELK 스택
DevOps 개발자 로드맵 - 2020
Last updated