Info
해당 페이지는 DevOps 가 되기위한 Roadmap 을 정리한 페이지입니다. 해당 페이지는 아래 링크에 나와 있는 내용을 알아두면 좋은 내용만 추려서 정리 하였습니다. (지극히 주관적)
아래 GitHub 를 참고 했습니다.
해당 페이지에서 PDF 파일을 다운로드 받으실 수 있습니다.
목차는 다음과 같습니다.
DevOps 엔지니어를 위한 학습 리소스(대부분 무료)
- GIT
- Learn one programming language
- Learn Linux & Scripting
- Learn Networking & Security
- Learn Server Management
- Learn Containers
- Learn Container Orchestration
- Learn Infrastructure as a code (X as Code)
- Learn CI/CD
- Learn Monitoring & Observability
- Learn one Cloud provider
- Learn Software Engineering Practices Bonus: Learn DevSecOps Fundamentals
1. Git
IT 업계에서 가장 많이 쓰이는 리소스(파일) 저장소입니다.
Git 은 소스 코드 관리에 사용되는 무료 도구로서, 여러 개발자가 비선형적인 개발 작업을 함께 수행할 수 있도록 합니다.
GitLab 과 GitHub 가 존재합니다. (보통 GitLab 은 private 환경에서 주로 쓰입니다.)
연습
- Learn Git Branching : 실습을 통해서 배우기 좋습니다.
2. 프로그래밍 언어 하나 학습
개인적으로는 Python 이 좋은 것 같습니다. 그 이유는 아래와 같습니다.
- 배우기가 쉽다.
- 자동화 도구에서 python 을 사용하는 경우가 많다.
3. 리눅스와 scripting 학습
대부분의 서버는 Linux OS 를 사용하므로 Linux 와 CLI 에 익숙해져야 합니다.
4. 네트워킹과 보안 학습
기본적인 OSI 7계층 부터 네트워크의 기본 동작방식, network 프로토콜, 방화벽, DNS 등등 알아두어야 차후 실무에서 flow 등을 이해하기가 쉽습니다.
5. 서버 관리 학습
서버 관리에는 서버가 안정적으로 최적의 성능 수준으로 작동하는 데 필요한 모든 인프라 모니터링 및 유지 관리가 포함됩니다. 효과적인 서버 관리 전략 의 주요 목표는 다음과 같습니다.
- 안정성을 극대화하는 동시에 서버 속도 저하와 다운타임을 최소화합니다.
- 안전한 서버 환경을 구축해야 합니다.
- 시간이 지남에 따라 조직의 요구 사항에 맞게 서버와 관련 작업을 확장합니다.
참고자료
reverse proxy
역방향 프록시와 정방향 프록시는 헷갈리지만 핵심은 대상과 직접 통신이 불가하다는 점입니다.
- 정방향의 경우 : 클라이언트 앞에 위치하여 어떤 원본 서버도 해당 클라리언트와 직접통신이 불가
- 역방향의 경우 : 원본 서버 앞에 위치하여 어떤 클라이언트도 해당 원본서버와 직접통신이 불가
CDN edge server
우선 CDN 에 대해 알아보자.
CDN 이란?
콘텐츠 전송 네트워크로 사용자와 가까운 곳에 콘텐츠를 캐시하는 지리적으로 분산된 서버의 그룹입니다.
이렇게 말로 풀어쓰면 어렵지만 간단히 생각해보면 소고기를 먹고싶을 때 직접 소를 잡으러 가는 것이 아닌 마트에 가서 사오는 것과 동일한 개념입니다.
CDN Edge server 란?
네트워크의 논리적 극단 또는 에지 에 위치하는 컴퓨터입니다. 마트의 개념입니다.
Cache Server
캐시 서버란? 사용자가 가장 자주 요청하는 웹 페이지를 캐싱하여 기업이 인터넷에서 웹 콘텐츠에 빠르게 액세스할 수 있도록 하는 서버입니다.
자주 요청되는 콘텐츠를 캐싱하여 네트워크 트래픽을 줄이고 액세스 속도를 높이기 위해 사용됩니다.
6. Container 학습
DevOps 에게 중요한 부분 중 하나인 가상화(컨테이너) 부분입니다.
컨테이너 기술 자체는 1979년 Unix의 chroot(루트 디렉토리를 변경, 즉 프로세스 격리) 부터 시작해서 꽤 오래된 개념입니다. 하지만 최근에 급격히 인기를 얻었습니다.
- 2000년대 LXC(Linux Containers) 등장 : LXC는 하나의 리눅스 커널 위에서 여러 개의 격리된 사용자 공간(userspace)을 만들어 주는 기술입니다. 쉽게 말해서 VM처럼 완전히 분리된 환경을 만들어주는데, VM과 달리 커널은 호스트와 공유하는 방식입니다.
- Docker 의 등장(2013) : 간단하게 띄울 수 있고, 이미지도 있어서 활용이 편리하였지만, 관리 부분에서 문제가 있었습니다.
- 클라우드 시장의 성장 : 현대에 들어서서 인터넷 기술이 발달하고, Docker 와 같은 신 기술들이 늘어나면서 클라우드 시장이 같이 성장하였습니다. 또한 스타트업 붐이 일어나면서 초기 비용 감소에 메리트가 있었고, 자동화 및 AI 기술이 발전하면서 실제 구비하기 힘든 고사양 서버를 임대하는 식으로 운영이 가능해졌습니다.
- kubernetes 의 등장 (2015~2018) : 초기에는 복잡해서 환영받지 못했지만 클라우드 도입이 늘어나면서 수십 수백개의 container 관리, 무중단 배포 등 관리 측면에서 k8s의 진가가 발휘되면서 규모가 커졌습니다.
7. Container Orchestration 학습
container orchestration은 컨테이너 배포, 관리, 확장 및 네트워킹을 자동화합니다. kubernetes 가 작동하는 방식과 기본 구성 요소를 알아야하고, kubectl 및 Helm 도구를 사용하는 방법을 알아야 합니다.
8. IaC 학습
Terraform 과 Ansible 을 추천합니다.
Ansible 은 docker 를 띄워서 해보면 좋습니다.
9. Learn CI/CD
지속적 통합/지속적 배포(CI/CD)는 앱 개발 단계에 자동화를 도입하여 고객에게 앱을 지속적으로 제공하는 방법입니다. CI/CD는 새로운 코드를 통합하는 과정에서 개발 및 운영팀이 겪을 수 있는 문제를 해결하는 솔루션입니다.
CI/CD는 통합 및 테스트 단계부터 배포까지 앱 수명 주기 전반에 걸쳐 지속적인 자동화와 지속적인 모니터링을 제공합니다. 이러한 연계된 작업 방식은 종종 ” CI/CD 파이프라인 ” 이라고 불리며 , 개발 및 운영 팀의 지원을 받습니다.
CI/CD 파이프라인에는 빌드, 테스트, 배포 등 여러 단계가 있지만 훨씬 더 많은 활동이 포함될 수 있습니다.
일부 인기 있는 CI/CD 도구 는 Jenkins, TeamCity, CircleCI, Bamboo, GitLab, Azure DevOps입니다.
10. Learn Monitoring & Observability
모니터링은 계획, 개발, 통합 및 테스트, 배포, 운영에 이르기까지 전체 개발 프로세스를 감독하는 것을 의미합니다. 운영 환경에서 애플리케이션, 서비스 및 인프라의 상태를 실시간으로 완벽하게 파악하는 것이 포함됩니다.
특히 소프트웨어가 프로덕션 단계 에 있을 때 이 점이 중요하며 , 인프라와 애플리케이션에서 모든 종류의 문제를 추적해야 합니다.
가장 인기 있는 도구는 Prometheus 와 Grafana 이지만, AWS CloudWatch, Azure Monitor, Google Cloud Monitoring과 같은 클라우드 기반 도구도 있습니다.
11. Learn one Cloud provider
AWS 가 가장 접근하기 쉬운 Cloud 업체 중 하나입니다. 운영방법을 배우고 자격증을 하나 겸비해 두는 것은 좋은 방안이라고 생각합니다.
12. Learn Software Engineering Practices
DevOps 엔지니어는 Scrum 과 같은 Agile 환경에서 다른 개발자들과 팀을 이루어 일하게 될 것입니다 . 따라서 SDLC 의 다양한 부분 과 그 안에서 사용되는 도구들을 아는 것이 매우 중요합니다.
또한 CI/CD 방식으로 설정해야 하므로 자동화 테스트가 어떻게 작동하는지 아는 것이 좋습니다 .