어느 ICT회사에나 시스템/서비스 운영이라는 업무가 있습니다. 상대적으로 규모가 작은 스타트업에서는 개발자가 겸하기도 하지만 규모가 큰 금융회사에서는 시스템 운영부라는 독립적인 부서가 존재하고 운영 업무를 수행합니다. 시스템관리자는 command를 무기로 일합니다. OS나 솔루션의 여러 명령어를 파이프로 엮어서 원하는 업무를 수행 합니다. command 세상에서 무서울게 없던 그들에게 새로운 도전이 요구되고 있습니다. 바로 “프로그래밍 능력” 입니다.
이 글은 지금도 어느 전산센터에서 밤을 세우며 일하고 있을지 모르는 “시스템관리자”를 대상으로 합니다.
왜 갑자기 시스템 관리자가 프로그래밍 공부를 해야 하나요?
Infrastructure as Code를 아시나요?
IaC(Infrastructure as Code)란 개념을 아시나요? 우리가 새로운 Infra를 셋팅하려면 어떤 일이 필요할까요? OS를 설치하고 OS 필요한 여러 최적화 설정을 추가하고, 그놈의(?) 보안 취약점을 개선하고, Web서버 WAS, middleware를 설치하고 서비스를 띄웁니다. 벌써 힘드네요…
그런데 구성해야 할 서버가 또 들어왔습니다. 어떤 일이 필요할까요? OS를 설치하고.. 설치하고.. 설치하고.. 이 반복 작업을 막기 위해 요즘은 완성된 VM Image를 관리합니다. 서버를 구성할 때 필요한 모든 최적화된 설정을 적용하고 그 결과물은 Snapshop 해 놓습니다. 이미 구성이 완료된 image를 이용해 서버를 띄웁니다.
IaC는 뭐가 다를까요?
그럼 인프라를 코드로 관리한다는 IaC는 뭐가 다를까요? 이 지겨운 반복 작업을 코드로 관리하는 것이 포인트 입니다. VM Image가 일련의 작업을 적용한 결과물을 저장한다면 IaC는 과정을 저장합니다. “OS를 설치한다.” “OS에 주요 설정을 구성한다.” “Web 서버를 설치한다.” … 이 모든 과정을 한줄 한줄 Code로 작성합니다.
어떤 이점을 가져다 줄까요?
Code로 인프라를 관리한다는 것이 어떤 이점을 가져다 줄까요? 일단 우리가 반복적으로 하던 그 작업에 Version 관리 개념을 적용할 수 있습니다. 이 버전에서는 Web서버까지 설치, 다른 버전에서는 WAS까지 설치… 설치 프로세스가 변경되면 Ver 1.0에서 2.0으로 앞서 설명드린 것과 같이 IaC는 우리가 하는 작업의 과정을 Code로 표한한 것이라 프로세스가 변경되면 Code를 수정하면 됩니다. 작업절차서를 Review하면서 문제가 될 부분을 점검하듯 Code Review를 할 수 있습니다. 개발자가 프로그램을 작성하다 의도치 않은 오류를 만났을 때 Debugging을 하듯이 인프라를 Debugging 하며 실수를 줄일 수 있습니다.
프로그래밍을 배우세요!!
앞으로의 트랜드는 이렇게 Infra 작업을 코드로 관리하는 것입니다. 우리가 인프라 관리를 더 잘 하기 위해서 이제는 프로그래밍 지식이 필요합니다. 어떤 언어든 상관 없습니다. 프로그래밍을 배우세요!!
대표적인 IaC 솔루션은 Terraform, Ansible, Chef, Puffet 등이 있습니다. Public Cloud에서는 인프라를 관리하는 도움을 주는 API와 AWS CloudFormation과 같은 IaC 솔루션을 제공합니다.
왜 “Python”을 추천할까요?
쉽습니다. 기본서 한권을 보시면 알 수 있습니다. 기본 문법이 정말 쉽습니다. 시스템관리자가 대단한 Enterprise Web Application을 만들리는 없고, 앞서 말한 IaC에 활용할 정도이면 Python의 높은 생산성이 큰 이점입니다. 인프라를 관리하고 운영 프로세스를 자동화하는데 Python은 더할 나위 없이 좋은 언어입니다. 의욕이 불타는 누군가 서비스를 만들고 운영하고 싶다면 “Django”, “Flask” 같은 좋은 Web Framework도 있습니다. 앞서 소개한 Ansible이나 Private Cloud Solution으로 유명한 “OpenStack”도 python으로 작성된 프로그램 입니다.
부끄럽지만 Python의 쉬운 문법은 그 동안 프로그래밍에는 문외한이었던 우리(시스템관리자)에게 그나마 낮은 허들입니다.
Python!! 뭐 부터 시작할까요?
Python의 문법은 쉽지만 프로그래밍 공부는 어렵습니다. 먼저 기본서 하나를 읽으면서 책에 나와있는 code 정도는 스스로 코딩해보시길 권합니다. 제가 본 기본서는 “Do it! 점프 투 파이썬” 이었습니다. 요새는 “혼자 공부하는 파이썬”이란 책이 1위네요. 어떤 책이든 상관 없습니다. 기본서 하나로 기본기와 프로그래밍 근육을 단련하세요. “Do it! 점프 투 파이썬”이란 책은 인터넷에 오픈되어 있어 온라인으로 보실 수 있습니다.
기본서를 다 봤다면 좋은 강좌 하나를 듣는 것이 좋습니다. “Coursera”라고 아시나요? 세계 유수의 대학, 기관의 좋은 강좌를 심지어 무료로 올려둔 교육 사이트 입니다. 이런 사이트들을 MooC(Masive Open Online Course)라고 하는데요. Coursera, edX, 칸아카데미, udemy, Udacity 등이 있습니다. 우리나라에는 커넥트 제단에서 운영하는 edwith와 인프런이 있습니다.
제가 추천하는 강좌는 Coursera의 “모두를 위한 Python”입니다. 정말 유명한 강좌로 한글 자막도 제공합니다. 강좌에서 사용하는 책도 pdf로 다운로드 할 수 있습니다. 교수님이 중간 중간 유머도 섞어 동영상 강의를 만드셨는데 지루하지 않고 재미있습니다. 2byte 문자를 설명하는 부분에선 “이광춘”이란 한글도 나옵니다. (아마도 해당 강의에서 사용하는 책을 번역하신 우리나라 교수님의 성함 같습니다.)
강좌까지 다 수강하셨으면 이제 개발자 답게 생각하고 고민하는 공부가 필요합니다. 객체지향 / 함수형 프로그래밍 개념도 공부하고, 파이썬답케 코딩하기, 파이썬의 패키지 관리자(pip) 등 한단계 높은 공부가 필요합니다. 이 때 보면 좋은 책이 “파이썬을 여행하는 히치하이커를 위한 안내서” 입니다. 내용은 생소해서 어렵게 느끼실 수 있지만 개발자다운 능력을 갖추는데 필요한 많은 정보를 담고 있습니다.
다음 단계는 “하고 싶은 것을 하세요!!”
다음 단계는 하고 싶은 것을 하는 것입니다. 거창하게는 AI(머신러닝, 딥러닝) 분야를 공부할 수도 있고, 빅데이터 분석을 공부할 수도 있습니다. 매번 반복적으로 하는 일을 자동화하는데 쓸 수도 있습니다. 매 월 만드는 운영보고서에 들어가는 Excel sheet를 자동으로 만들수도 있고, shell script로 작성했던 다수의 운영 프로세스를 파이썬으로 만들어 볼 수도 있습니다.
마치며..
이 글은 동료 한 분이 제게 “Python 공부하려면 어떻게 해야 해요?”라는 질문을 주셔서 답변을 정리하면서 작성했습니다. 동료에게 VScode와 Python을 셋팅해주고, 같이 공부하자고 말하면서 모든 운영자가 프로그래밍을 하면 좋겠다는 생각을 했습니다. 운영자와 개발자의 경계가 모호해지는 지금 프로그래밍 능력을 갖춘 시스템관리자가 더 많아졌으면 좋겠습니다.
좋은 정보가 많은 곳
점프 투 파이썬 : https://wikidocs.net/book/1
파이썬 조각 코드 모음집 : https://wikidocs.net/book/536
Programiz : https://www.programiz.com/python-programming
파이썬을 여행하는 히치하이커를 위한 안내서 : https://python-guide-kr.readthedocs.io
Google Python Style Guide : https://google.github.io/styleguide/pyguide.html
테리엇의 디지털 놀이터(블로그) : https://tariat.tistory.com/category/파이썬]
파이썬 프로그래밍 입문서 (가제) : https://python.bakyeono.net]
raccoony’s cave(너굴님 블로그) : http://raccoonyy.github.io
개발자 울이 노트(블로그) : https://woolbro.tistory.com