일단 최종 미션을 한 게 감개무량하다. 무려 30일간 미션을 수행하다니=_= 하루는 컴퓨터가 낭아갔는데도 불구하고 사무실까지 와서 포스팅을하고 참 고생을 했다. 내가 생각해도 대단하다.
강의를 듣게 된 계기
- 내 경우 강의를 듣게 된 계기는 기계학습을 Internet을 통해서 구축을 해야 하는데 회사에인원이 너무 부족했던 것이다. PM도 없고 당연히 PL(뭐하는 사람이야 이건)은 당연히 없고 데이터 사이언티스트도 없고 개발자는 현저히 부족(나밖에 없음)하고 이에 따라서 당연히 뭔가 개발을 하려면 당연히 비용이 발생하고 프리랜서를 고용하는 수밖에 없었다.
- 그리고 당연히 자기개발을 하자는, Python과 머신러닝 딥러닝 이외의 다른 언어를 좀 알아 보자는 느낌적인 느낌도 있었다. (물론 이런 느낌은 DevOps의 스택을 보면서 산산조각 났지만)
- 이유는 DevOps는 배워야 할 것이 너무 많았다. 차라리 개발자로 여러개 배우는 게 훨씬 낫겠더라. 그러면서 DevOps로 전향하는 게 낫겠더라. 솔직히 초기부터 DevOps를 배우고자 하는 사람은 천재 아니면 업무를 할 시에 매우 스트레스를 받을 것 같았다. 왜냐하면 업무 영역에 비해서 일단 아는 게 별로 없을 것 같았으니까.
- 아 기본적으로 수업의 내용에 대해서 (내가 배운데까지만) 알아 보면 다음과 같다.
수업 내용
- DevOps의 기본부터 설명을 해 준다.
- 클라우드란 무엇인지부터 AWS란 무엇인지 설명을 해 준다.
- AWS의 사용방법을 설명해 준다. (로그인 하는 방법부터 보안 그리고 EC2생성등 상세하게)
- 리눅스를 좀 알면 좋다. 왜냐하면 PUTTY를 사용하니까.
- Django를 통해서 백엔드를 구축하는 방법을 가르쳐 준다.
여기에 풀스택으로 하려면 html이랑 javascript를 알아야 하겠지..? 앞으로 내가 배워야 할 내용인 것 같다.
(아, 물론 업무도 게을리 하면 안 되겠지만..ㅠ)
DevOps의 기본
- 그럼 DevOps의 기본부터 좀 알아 보자. 일단 Network가 매우 중요하다고 했다. 아 물론 상식 수준에서. 막 Network를 프로그램을 통해서 구축하고 그런 능력이 필요한 것이 아니라 Subnet을 통해서 이 네트워크는 해당 Gateway에서 왜 못 빠져나가고 얼마나 나눠질 수 있는지, VPN에 대한 개념. 과 같이 상당히 일반적이고 주로 AWS에서 많이 사용되는 개념을 네트워크에서 알아야 하기 때문에 DevOps 개발자는 네트워크에 대해서 알아야 한다.
- 뿐만 아니라 DB역시 DevOps 개발자에게 상당히 중요한 역할을 하는데, ,이는 AWS에서 DB가 다양한 서비스를 가지고 있을 뿐만 아니라 모든 환경에서 데이터는 DB에 저장되니까 환경을 구축하는 DevOps개발자는 DB를 잘 알아야 하지 않겠는가?
- 또한 보안도애 대한 환경도 구성할 줄 모르면 'ㅋㅋㅋ 고딩한테 털림' 이런 메세지를 어느 새 서버에 받게 된다.
- 그리고 때에 따라서는 ML이나 DL을 구축할 때 RedShift나 Deeplearning과 같은 서비스도 구현 할 줄 알아야 한다.
무엇보다 중요한 것은 서버에 대한 학습이기 때문에 이에 대한 학습을 위해 선결되어야 할 것이 OS에 대한 학습이다.
이를 정리하면 다음과 같다.
클라우드란 무엇인가 AWS란 무엇인가
클라우드 컴퓨팅이란 인터넷 기반의 컴퓨팅을 말한다. 즉, 인터넷 상의 가상화된 서버에 프로그램을 두고 필요할때마다 컴퓨터나 스마트폰 등에 불러와 사용하는 서비스이다. 뭐, 자세히는 Public, Private, Hybrid이런 것이 있는 데, 이런 것은 강의에서 설명하지 않았던 것으로 기억하고 IaaS , SaaS, PaaS의 개념은 설명했던 것으로 기억한다.
IaaS / SaaS / PaaS
이 세가지는 자유도에 의해 구분 할 수 있다. 일반저으로 IaaS가 가장 자유도가 높고 그 다음이 PaaS, 마지막이 SaaS이다. IaaS는 인프라 수준의 클라우드 컴퓨팅을 제공해 사용자가 서버 OS부터 미들웨어, 런타임, 그리고 데이터와 어플리케이션까지 직접 구성하고 관리할 수 있음.
반면에 PaaS는 운영체제, 미들웨어, 런타임 등을 미리 구축한 상태로 제공하기 때문에 IaaS보다 관리상의 자유도가 낮음.. 하지만 PaaS 사용자는 서비스 외적인 부분에 신경 쓸 필요가 없고, 오로지 애플리케이션 개발과 비즈니스에만 집중할 수 있음.
‘서비스로서의 소프트웨어’를 의미하는 SaaS는 클라우드 서비스 형태 중 가장 완성된 형태의 클라우드 서비스임. 별도의 비용을 들여 소프트웨어 라이센스를 구매할 필요 없이 월간/연간 구독 형태의 사용료를 지불. 반면에 개발 및 유지보수의 필요가 없음.
우리는 AWS를 사용할 것이고 이 중에서 가장 자유도가 높은 IaaS(EC2)를 사용하여 개발을 할 것임. 왜냐하면 Amazon Web Services(AWS)는 전 세계적으로 분포한 데이터 센터에서 200개가 넘는 완벽한 기능의 서비스를 제공하는, 세계적으로 가장 포괄적이며, 널리 채택되고 있는 클라우드 플랫폼이기 때문이며 수 많은 서비스를 제공하고 있어서 DevOps를 배우기에 최적의 클라우드 서비스이기 때문임.
AWS의 사용방법(+사전지식)
사전지식이란 AWS에서 VPC를 배우는데 VPC를 구현하기 위해서 필요한 네트워크 지식을 배우는 것이다. 덕분에 네트워크 지식을 조금 습득하였음. AWS사용방법은 MLops를 배우고자 하는 사람은 Sagemake나 Redshift같은 것을 기대하겠지만 여기서는 주로 간단한 로그인 방법부터 강력한 보안방법을 배우고 서버인 EC2 구현 방법에 대해서 배운다. 그리고 간단한 네트워크인 VPC를 구현하는 방법에 대해서 배운다.
또한 관련해서 EC2 - Subnet을 연결하는 방법에 대해서도 배운다. Subnet중에서도 Public Subnet/Private Subnet이 있는데 PUTTY를 통해서 어떻게 이Public subnet을 연결하고 Private subnet에 연결하는 지를 배운다. 즉, DevOps 개발자가 알아야 할 간단한 Network를 어떻게 구축해야 할지를 배우고 이는 추후 MLops를 구축할 때 크게 도움이 될 거 같다. 하지만 AWS의 사전 지식이 없는 경우에는 좀 따라가기가 어려울 것 같고 강사가 기본적으로 어느 정도 프로그래밍 지식이 있는 사람에 대한 사람들을 대상을 기반으로 진행하는 것 같다. 예를 들면 EC2 로그인을 할 때 PUTTY계정을 ec2-user로 꼭 해야 하는데 이것을 제대로 말하지 않고 그냥 넘어가는 것이 그렇다. (개인적으로는 인터넷 검색해서 잡긴 했지만 강사에 대해서는 좀 불만이 있었다)
PUTTY로 로그인이 안 되서 한참을 해맴. =_=
- Django를 통해서 백엔드를 구축하는 방법
솔직히 강의에 나와있는 수준의 Django만을 구현하기 위해서는 튜토리얼 홈페이지만 따라가면 된다고 생각이 된다. 내가 많은 강의를 듣지 않아서인지 모르겠지만=_=;; 자세히 알아야 할 것은 오히려 JINJA/HTML/javascript등이라고 생각이 된다.
따라서 사전에 이러한 것에 대한 학습을 많이 할 필요가 있다고 생각이 된다. 하지만 강의에서 도움이 되었던 것이 한가지가 있으니 그것은 관리자 페이지의 사용 방법이다.
클릭만으로 데이터 베이스의 제어가 가능하다니! 물론 코드를 admin.py에 추가해야 하긴 하지만 뭔가 혁신적이다. 이런 걸 하려면 기존에는 HTML 파일 형식을 다 만들고 미리미리 DB에 해당하는 파일을 다 만들어야 하고 또 상호작용을 위해 javascript를 다 만들어야 하는 줄 알았는데 대단하다!
만족도
아직 강의의 반도 수강하지 않았지만 일단 만족도는 보통이다. 모르는 지식을 꾸겨 넣어 준다기 보다는 (개인적으로는 그런 걸 좋아한다. 주입식 교육)모르는 지식을 던져준다고 할까. 일단 모르는 게 생기면 다 찾아보고 해결해야 한다(다행히 지금까지는 모르는 지식이 private subnet밖에 없었지만)
-> 친절하게 모르는 걸 설명해 주지 않는다. 기본적으로 프로그래밍에 대해 지식이 있다고 생각하고 강의를 한다. 예를 들면 VS_CODE를 설치하는 것이나 설정하는 것, 가상 환경을 설정하는 것, 이런 것은 전혀 배려하지 않는다. 개인적으로는 AWS를 사용함에 있어서 매우 필요하다고 생각하는데 본 강의에서는 설명해 주지 않는다. 물론 추후에 설명해 줄 수도 있지만 지금까지 학습한 바에서는 설명이 없다.
-> 위의 내용과 겹치는 내용이다. 즉, 새로운 지식을 습득할 수 있다. 시간이 걸리긴 하지만(한 강당 대략 1시간) 구글링을 하면서 모르는 지식을 볼 순 있다. 10분짜리 강의라도 내가 정확히 강의를 따라가고 있는 지 구글링으로 강의를 점검한다.
예를 들면 WSL2사용도 내 컴퓨터는 매우 느리지만 강사 컴퓨터는 매우 빠르다. 따라서 구글링을 하면서 내가 제대로 따라가고 있는 지 검색할 수가 있다. 솔직히 WSL2의 개념 자체도 이번에 처음 알았다. 위도우에서 우분투를 가용하려면 VMWARE같은 가상 환경을 사용해야만 하는 줄 알았지 이런 획기적인(?)툴이 있는 줄 알이 못했다. 본 강의에서 가장 큰 수확인 것 같다.
-> AWS를 막 사용하려고 하는 사람에게 도움이 될 거 같은 느낌이 든다. AWS의 계정을 만들고, 보안을 생성하고, EC2서버를 생성하고, PUTTY를 통해 접속을 하는 등의 방법을 알려주기 때문에 자세한 AWS의 사용 방법 보다는 기본적인 AWS서비스의 사용 방법을 알려주는 것에 충실하다. 따라서 이러한 방법론을 알려고 하는 사람들에게 도움이 될 것 같다. 물론 DevOps 개발자로서 막 시작하는 사람이라면 기본적인 사용방법은 구글링으로도 충분히 알 수 있을 것이기 때문에 따로 본 강의를 듣지 않아도 될 것 같긴 하지만=_=나는 비전공자이기 때문에 필요하다
본 강의를 수강한 뒤의 예정
-> 본 강의를 수강한 다음은 ML을 할지, 아니면 DevOps를 계속 할지에 따라 나뉠 것 같다. 만약 DevOps를 한다면 javascript와 같은 웹 관련 언어(NodeJS, HTML)를 배우고 네트워크 기초를 탄탄히 해야 할 것이지만 MLops를 위해서는 MLops개발자가 되기 위해서 기본적으로 필요한 지식들을 배워야 할 것이다. 물론 현재 SaaS플랫폼으로 ML을 제공하는 툴들이 많기 때문에 그냥 업무에서 이런 툴들을 사용하는 것도 생각하고 있기는 하다. 하지만 비용을 생각해 보면 MLops가 나을 것 같다. 그리고 자기개발 측면에서도 MLops를 속성으로 배우는 것이 좋을 것 같고 우리 회사에 MLops나 DevOps개발자 한 명쯤 두는 것도 나쁜 선택은 아닐 것 같다. ML은 내가 충분히 가능하니까! 하지만 그 전에 일단 이 강의를 마치고 기본적인 DevOps강의를 마치는 것이 선결되어야 할 것이다. 즉, 소규모 DevOps를 구축하고 그 다음엔 CI/CD를 구축하는 것이 필요하다.
끝
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.
#패스트캠퍼스 #패캠챌린지 #직장인인강 #직장인자기계발 #패스트캠퍼스후기 #한 번에 끝내는 AWS 인프라 구축과 DevOps 운영 초격차 패키지 Online!
- 포스팅하는 도중 갑자기 서피스 컴퓨터가 검은 화면이 되서 AS를 보낼 상황이 되었다.ㅠㅠ 그래서 급하게 사무실로 내려와서 작성한다. 그런데 여기에 파이썬이나 vscode가 깔려있지 않은 관계로 실습은 못해서 추후 컴퓨터를 받으면 그때부터 실습을 할 예정 해당 내용은 강의를 보면서 필요한 내용을 스크린샷으로 복붙할 예정.