DevOps 역량 강화하기 - 0. 학습전략 수립하기

김재훈·2023년 5월 31일
0
post-custom-banner

글을 시작하며...

글을 시작하기 전에 DevOps 개발자가 되려는 이유를 잘 설명하기 위해서 저의 개인적인 경험과 목적을 상세히 풀어 써보려고 합니다.
어떻게 공부할 것인지만 궁금하신 경우에는 다음으로 넘어가 주세요.

저는 어릴 때부터 항상 컴퓨터를 최종 사용자 관점에서 사용하는 것보다는 컴퓨터들이 속하는 시스템을 구축하고, 이를 보다 편하고 효율적으로 하는 방법에 더 관심이 많았습니다. 이러한 기질 때문일지 자연스럽게 고등학교에서는 가상의 시나리오를 따라 Linux, Windows Server, Cisco 장비를 통해 인프라를 구성하는 대회에 선수로 출전하거나, 졸업 이후에도 자연스럽게 클라우드 환경(MS Azure)에서 업무할 수 있는 회사로 커리어를 이어 나갔습니다.

최근에는 직접 프로그래밍하는 것에 흥미가 동해, 6개월 간 Front-End 부트캠프를 경험해봤습니다. 어떻게 보면 인프라에 더 가깝다고 느껴질 수 있고, 기존의 네트워크 지식을 활용할 수 있는 Back-End가 아닌 Front-End 부트캠프를 선택했는지 글을 읽으시는 분 입장에서 의문을 느끼실 수 있을 것 같습니다.

저 또한 그렇게 생각했었지만 직접 구현되는 걸 눈으로 볼 수 있다는 즐거움도 있었고, 사이드 프로젝트를 혼자 진행할 때 눈에 보이는 부분을 그럴싸하게 만들고 싶다는 욕심도 있어 Front-End 분야로 학습을 진행했습니다.

부트캠프를 마치고, DevOps 개발자로 취업을 준비하며 회사들이 요구하는 자격 요건을 정말 오랜만에 보게 되었는데요. 클라우드의 지엽적인 부분만 다뤘던 경험으로 인해 내가 이론적으로 알고 있는 베이스보다 실무 능력이 따라주지 않는다는 것을 느꼈습니다.

그래서 부족한 부분을 보강하기 위해, 아래 로드맵과 ChatGPT의 도움으로 커리큘럼을 만들었습니다.
DevOps 로드맵

생성된 커리큘럼을 따라가면서 제게 부족한 부분을 강화하려 하며, 저의 전략을 세우는 방법이 마음에 드시다면 다른 분들도 새로운 것을 배울 때 참고해주시면 좋을 것 같습니다.

커리큘럼 만들기

웹 개발자(를 시작하는 신입 개발자) 사이에서 많이들 참고하는 로드맵 사이트가 있습니다.
roadmap.sh 사이트인데 이곳에는 제가 참고한 DevOps 외에도, Front-End, Back-End, 외 다양한 분야에서 요구되는 개발 역량을 갖추기 위해 알아야 할 이론적 지식과 어떠한 실제적 경험이 필요한지 그림으로 보여주고 있습니다.

마침 ChatGPT Plus를 구독 중이어서 ChatGPT가 웹 사이트에 내용을 읽어보고, 답변하는 모델을 사용할 수 있었는데요. 이에 도움을 받아 커리큘럼을 상세히 작성해보았습니다.

저는 다음과 같은 과정을 통해 커리큘럼을 만들었습니다.
a. DevOps Roadmap을 보면서 제가 이미 알고 있는 지식을 다음과 같이 리스트업 했습니다.

b. GPT-4(with Web Browsing) 모델에 다음과 같은 프롬프트를 입력해서 커리큘럼 초안을 작성했습니다.
	`https://roadmap.sh/devops 해당 사이트는 DevOps 개발자가 되기 위한 학습 여정을 그린 로드맵 사이트야. 내가 해당 로드맵에서 이미 알고 있는 지식은 다음과 같아. {리스트업한 내용} DevOps 개발 역량 강화를 위해서 내가 이미 알고 있는 내용 외에 로드맵에서 등장했던 내용들을 추가로 학습하려고 해. 한 학기(15주) 분량으로 커리큘럼을 작성해줄 수 있을까?`
c. b번에서 작성된 내용을 기반으로 GPT-4(일반) 모델에 다음과 같은 프롬프트를 입력해서 커리큘럼 첨삭을 요청했습니다.
	`DevOps 분야에서 나의 역량을 강화하고자 부족한 부분을 추가 학습하는 15주 짜리 커리큘럼을 작성해봤어. 너에게 바라는 요구사항은 2가지야. 1. 작성된 커리큘럼에서 더 효율적으로 학습 방향성 교정 2. 15주차 프로젝트 세션 때 앞서 배운 내용들을 모두 아울러 다룰 수 있는 프로젝트 주제 제안 {b번에서 생성된 커리큘럼}`
d. 생성된 프롬프트를 읽어보면서 말이 되지 않는 부분이 생성되었거나, 학습 방향성이 잘못됐다고 느껴지는 부분들이 있는지 확인합니다.

글을 마치며 (with 생성된 커리큘럼)

생성된 커리큘럼을 소개합니다.
앞으로 이어질 글에서는 이 커리큘럼을 따라 학습 일지를 남겨보려고 합니다.

오늘도 제 블로그에 방문해주시고, 제가 쓴 글 읽어주셔서 감사합니다.

1-2주: IaC(Infrastructure as Code)

  • Terraform을 이용한 인프라 환경 구축 방법을 학습합니다.
  • Ansible을 이용한 시스템 설정 및 SW 관리 방법을 학습합니다.
  • Vault를 이용한 Secret 관리 방법을 학습합니다.

3-4주: Container Orchestration

  • Docker를 이용해 서비스를 컨테이너화하고, 배포하는 방법을 학습합니다.
  • Kubernetes를 이용한 대규모 컨테이너 배포, 스케일링, 관리 방법을 학습합니다.

5-6주: Monitoring and Logging

  • Datadog을 이용한 모니터링 방법을 학습합니다.
  • ELK 스택을 이용한 로그 관리 방법을 학습합니다.

7-8주: 테스트 자동화와 테스트 주도 개발(TDD)

  • 테스트 자동화 도구를 이용한 테스트 작성 방법을 학습합니다.
  • 테스트 주도 개발(TDD) 접근법을 이해하고, 실제로 적용합니다.
  • GitHub CI/CD를 사용한 지속적인 통합/배포를 학습합니다.

9-10주: GitOps

  • ArgoCD를 이용한 GitOps 방법을 학습합니다.

11-12주: 클라우드 보안

  • AWS에서 제공하는 보안 서비스 및 Best Practice를 학습합니다.

13-14주: MSA(Micro-Service Architecture)

  • MSA의 기본 원칙과 패턴을 학습합니다.
  • Service Mesh의 개념을 이해하고, Istio를 통한 구현 방법을 학습합니다.

15주(또는 그 이상): 개인 프로젝트 및 리뷰

  • 지금까지 배운 내용을 기반으로 서비스를 AWS와 Azure 양쪽에 동시 배포합니다.
    - Terraform과 Kubernetes를 조합하여 애플리케이션 배포를 자동화해야 합니다.
    - Datadog, ELK 스택 등 모니터링 및 로깅 솔루션을 이용하여 측정 가능한 인프라를 구성해야 합니다.
    - MSA 아키텍쳐로 확장성이 확보된 인프라를 구성해야 합니다.
  • 프로젝트 완료 후 회고 리뷰를 작성합니다.
profile
개발하면서 새롭게 배운 내용, 시행착오한 내용들을 잊지 않기 위해 기록합니다.
post-custom-banner

0개의 댓글