요즘 facebook 이나 Developer 관련 커뮤니티를 보게되면 심심치않게 공유되고 있는 이미지가 있습니다. 


그 이름하여 DevOPS Roadmap 입니다. 


해당 Roadmap 이미지의 출처는 아래와 같습니다. 


[출처]

"https://github.com/kamranahmedse/developer-roadmap"


그리고 라이센스는 "License: CC BY-NC-SA 4.0" 를 유지해야 합니다. 


종류[편집]

일반적으로 다음의 권리를 선택하여 사용할 수 있다.

Attribution저작자표시 (Attribution; BY)저작물을 사용할 때에 원저작자를 꼭 표기해야 한다.
Non-commercial비영리 (Noncommercial; NC)저작물을 영리 목적으로 사용할 수 없다.
Non-derivative변경금지 (No Derivative Works; ND)저작물을 변경할 수 없다.
Share-alike동일조건변경허락 (Share-alike; SA)2차 저작물을 만들 때 그 저작물에도 원저작물과 같은 라이선스를 사용해야 한다.


[출처]

https://ko.wikipedia.org/wiki/%ED%81%AC%EB%A6%AC%EC%97%90%EC%9D%B4%ED%8B%B0%EB%B8%8C_%EC%BB%A4%EB%A8%BC%EC%A6%88_%EB%9D%BC%EC%9D%B4%EC%84%A0%EC%8A%A4


사설이 길어 졌지만.. Devops 를 하기위한 Roadmap 이라는 것을 보게되면 아래의 이미지를 확인할수 있습니다. 



위의 이미지를 보게되면... 맘이 참 헛헛 합니다....


1. Learn a Programming Language

 - Python

 - Ruby

 - Node.js

 - GO

 - Rust

 - c / c++


처음보이는 단락을 보게되니 프로그램을 할줄 알아야하는군요.. 개인적으로 프로그램을 하는게 싫어서 SE를 하게된 저로서는 큰 관문의 단락입니다. 

저 위의 언어 이외에도 여러가지 언어가 있겠지만, 언어들의 특징을 보게되면 자동화에 많이 쓰이는 언어들로 구성이 되어 있습니다. 

실질적으로 Python, Ruby 같은경우는 Shell Scripts 와도 많이 사용하는 언어이며, GO 언어도 시스템 관리용으로사용하기 좋은 언어 입니다. 

*.JS 나 Rust 같은경우는 제가 잘 모르기에 어떻게 평가할수는 없습니다. c / c++ 은 Back end 를 개발하시는분들이 많이 사용할만한 언어로 보입니다. 



2. Understand different OS concepts

 - Process Management

 - Threads and Concurrency

 - Sockets

 - I/O Management

 - Virtualization

 - Memory / Storage

 - File System


두번째로는 OS 에 대한 이해가 필요한듯 합니다. 

프로세스 관리, 쓰레드, 소켓, I/O 관리, 가상화, 메모리, 스토리지, 파일시스템등등... OS를 통한 여러가지 응용 프로그램을 운영하기위한 응용 지식이네요

OS를 3년이상 관리하셨던 분들에게는 익숙한 내용으로 보입니다. 



3. Learn about Managing Servers

 [Operating System]

 - Linux

 - Unix

 - Windows


[Learn to live terminal]

 - Learn bash scripts

 - Vim, Nano, PowerShell, Emasc

 - Compiling apps from source (gcc, make, and other related stuff)

 - System performance (nmon, iostat, sar, vmstat)

 - Text Manipulation (awk, sed, grep, sort, uniq, cat, cut, echo, fmt, tr, nl, egrep, fgrep, wc)

 - Process Monitoring (ps, top, htop, atop, lsof)

 - Network (nmap, tcpdump, ping, mtr, traceroute, airmon, airodump, dig, iptables)

 - Other (strace, dtrace, systemtap, uname, df, history)



세번째 내용을 보게되면 서버를 를 알아야 한다고 언급이 되어 있습니다. 

OS의 대표적인 Linux, Unix, Windows 를 알아야 하구요, 

Terminal 의 내용을 보면 저자는 Linux 를 좋아한다고 생각이 듭니다. Windows 관련 내용은 빠져 있네요

Bash scripts 와 Power Shell 을 알아야 하구요, 텍스트 편집기들을 알아야합니다. 그리고 소스컴파일을 위한 gcc, make 등의 기술을 알아야 하며, 시스템 성능을 측정하는 여러가지 툴을 알아야 하네요, 그 외에도 리눅스 텍스트 편집 유틸리티도 알아야하며, 시스템 모니터링툴들도 알아야하네요, 그 외에도 네트위크 관련된 툴 및 여러가지 OS 명령어를 알아야 한다고 언급이 되어 있습니다. 

아무리 보면 볼수록 Linux 위주의 그림으로 보입니다. 



4. Networking and Security

 - DNS

 - OSI Model

 - HTTP / HTTPS

 - FTP

 - SSL / TLS


네번째 내용을 보개되면 간략하게 언급이 되어 있지만 깊이가 있는 기술을 알아야 한다고 나와있습니다.

이름하여, 네트워크 및 보안 입니다.

위에 언급되어 있는 내용들은 네트워크 및 보안에 있어서 정말 필수적인 내용들중 일부만 나와 있습니다. 
저 내용만 알면 되겠지 라는 생각은 하지 않았으면 하는게 개인적인 사견입니다 ...


=========================================================

여기까지가 12월23일에 작성한 1~4 까지의 내용입니다.

하루나 이틀뒤에 나머지 4개의 내용을 좀더 정리를 해보려고 하였으나.. 어느덧 2019년이 되었군요...


위의 DevOPS 를 포함안 Developer RoadMAP 은 2019으로 내용이 변경이 되었습니다.

하지만 저는 2018년의 내용을 정리하고 있었기에 나머지 5~8의 내용을 정리해 보겠습니다.

=========================================================



5. What is and how to setup a __________


Reverse Proxy

Forward Proxy

Caching Server

Load Balancer

Firewall

Web Server

 - IIS

 - Apache

 - Nginx

 - Tomcat

 - Caddy


다섯번째 내용입니다. 

여러가지 Proxy 서비스에 대한 내용, Caching 에 대한 내용 방화벽 웹서버등이 있네요

Nginx, Apache, Haproxy, Squid 등 여러가지 프론트단의 HTTP 서비스 처리 솔루션에 대한 내용입니다. 

Firewall 이 여기에 왜 있는지는 살작 의문의 들지만 L7단의 서비스 및 스트링  보안의 내용까지 포함하게된다면 납득할만한 구성으로 보입니다.

결론적으로는 위의 프론트(HTTP) 단의 서비스를 구성할수 있어야 한다는 내용입니다.




6. Learn Infrastructure as Code


Containers

 - Docker

 - rkt

 - LX


Configuration Management

 - Ansible

 - Chef

 - Salt

 - Puppet


Container Orchestration

 - Kubernetes

 - Docker Swarm

 - Mesos

 - Nomad


Infrastructure Provisioning

 - Terraform

 - Cloud Formation  


IaC 에 대한 내용입니다. 

DevOPS 를하기위한 필수적인 내용이라고 생각이 듭니다. 

DevOPS 의 필수 조건이라면, 인프라의 자동화이고, 인프라를 지속적으로 관리를 해야합니다. 

물론 여러가지 서버 세팅 및 인프라 세팅으로 Shell Scripts 및 Cloud 벤더사가 제공하는 여러가지 SDK 를 이용해서 Cli 기반으로 직접 코드를 작성해두 됩니다. (능력자분들은...)  하지만 그렇지못한 대부분의 엔지니어분들에게 희망이 되는 솔류션입니다... (그렇다고 쉽진 않아요!!!!)

컨테이너는 여기에 나올 이유가 없지만 언급은 되었네요, 그 왜 서버 설정관리 솔류션입니다. 가장 대표적이고 범용적으로 세력을 넓히고 있는 Ansible 이 보이네요, 그 외에도 Chef, Puppet 등도 보입니다. 

 그 다음에 핫하디 핫한 K8S 가 보입니다.  그 외 Docker Swarm, Mesos 등이 보이네요... 대세는 K8S 로 넘어가는 추세 입니다. 

그다음에 보이는컨 Cloud 를 코드화 하는솔류션 입니다. Cloud Formation 같은경우는 AWS 에 종속되는 서비스이지만 AWS가 가장큰 Global Cloud 여서그런지 언급이 되었습니다. 하지만 특정 벤더사에 종속이 되기에 적합해 보이지는 않습니다. 

Terraform 같은경우 기능이나, 여러가지등이 안정적이고 편리하지는 않지만 그래도 Cloud 를 코스화하기에 적합한 솔류션으로 보입니다. 

K8S, Terraform 공부하세요... 두번하세요!



7. Learn some CI/CD Tool

Jenkins

Travis CI

Teamoit

Drone

Circle CI


SE 분들은경험하기 힘드나, 개발자분들은 늘 경험하고 있으신 관리배포 툴입니다. 

수많은 CI/CD툴이 있으며, 각기조직에서 맘에드는 툴을 사용하고 있으실듯 합니다. 그중에서 가장 범용적<?> 으로 사용되는 Jenkins 정도는 배워야 합니다. 




8. Learn how to monitor software and infrastructure

Infrastructure Monitoring

 - Nagios

 - Icinga

 - Datadog

 - Zabbix

 - Monit


Application Monitoring

 - AppDynamics

 - New Relic


Log Management

 - ELK Stack

 - Graylog

 - Splunk

 - Papertrail


소프트웨어 및 인프라를 모니터링 할 수 있어야 합니다. 

위에 모니터링 툴들은 검색해보면 나오는 대표적인 모니터링 솔류션이며, 언급되어있는 모니터링 툴 이외에도 정말 훌륭한 모니터링 툴들이 많이 있습니다.

 무료 모니터링 툴의 대표적인 툴인 Nagios, Zabbix 등이 있으며, AWS 에서 핫하게 밀어주는 Datadog 도 있군요

App 모니터링 툴 같은경우 제가 경험해본, 들어본 툴이 없기에 한국업체들이 많이 사용하는 제니퍼(APM)가 있을듯 합니다.

 그 외에도 로그를 관리하는 툴로소 ELK Stack 을 소개하고 있습니다. ELK는 공부를 하셔두 시간이 아깝지 않은 솔류션이며, 각종 Cloud 에서 제공이 되고 있습니다. 



9. Cloud Providers

AWS

Google Cloud

Azure

Digital Ocean

Heroku


마지막으로 Cloud Providers 에 대한 내용이며, 대표적인 AWS, GCP, Azure 등이 있습니다. 

그 외에도 Oracle, IBM등의 업체가 열심히 돈을 써가며 인프라를 투자하고 있습니다. 



위의 DevOPS 를 위해 어떤 기술을 익혀야하는지에 대한 Roadmap 을 처음봤을때... 뭐랄까 충격을 많이 받았습니다.

난 DevOPS 를 평생 못하겠구나 라는 생각도 많이 들었구요, 그렇지만 역으로 생각했을때 이렇게나 많은 기술이 필요하며, 어렵다면, 저 기술들을 실질적으로 습득하고 잘 사용하게되면 나의 IT 수명이 조금이라도 늘어나겠구나라는 생각이 듭니다. 


 




+ Recent posts