#90DaysOfDevOps - Responsibilities of a DevOps Engineer - Day 2
데브옵스 엔지니어의 책임
부디, 여러분이 자료를 찾고 Day1 of #90DaysOfDevOps 페이지에 글을 올리면서 함께 참여하기를 바랍니다.
첫 번째 글에서 짧게 다루었습니다만, 이제 더 깊이 있는 개념 그리고 애플리케이션을 만드는 것에는 두 가지 주요 파트가 있다는 것에 대해 이해할 필요가 있습니다. 소프트웨어 개발자들이 애플리케이션을 작성하고 테스트하는 개발 파트와 애플리케이션을 서버에 배포하고 유지하는 운영 파트 입니다.
데브옵스는 그 둘을 연결합니다.
To get to grips with DevOps or the tasks which a DevOps engineer would be carrying out we need to understand the tools or the process and overview of those and how they come together.
데브옵스, 데브옵스 엔지니어가 수행하는 업무에 대해서 파악하려면 그 둘을 어떻게 통합하는지, 그리고 툴과 과정에 대한 전반적인 이해가 필요합니다.
모든 것은 애플리케이션에서 시작합니다! 데브옵스를 통해 이 모든 것이 애플리케이션에 관한 것임을 알게 될 것입니다.
개발자들은 애플리케이션을 만듭니다. 이 과정에는 많은 기술 스택이 포함됩니다. 나중을 위해서 지금은 가볍게 넘어가겠지만, 여기에는 다양한 프로그래밍 언어, 빌드 도구, 코드 저장소 등이 포함됩니다.
데브옵스 엔지니어는 애플리케이션을 프로그래밍하지는 않지만, 개발 업무, 시스템, 도구 그리고 전반적인 과정에 대한 개념을 잘 이해하는 것이 중요합니다.
매우 높은 차원에서, 필요한 서비스 또는 데이터 서비스들과 애플리케이션이 통신하도록 구성하는 방법이나 테스트 및 테스트 방법에 대한 요구사항들을 포함하는 것까지 말입니다.
애플리케이션은 어딘가에 배포되어야 합니다. 복잡하게 생각하지 말고, 어딘가에 있는 서버라고 생각해봅시다. 애플리케이션이 생성됨에 따라 최종 사용자 또는 고객이 접속할 수 있을 겁니다.
그 서버는 어딘가에서 실행되고 있어야 합니다. 보통 온프레미스, 퍼블릭 클라우드 내, 서버리스(너무 멀리갔네요.. 서버리스에 대해서는 다루지 않을 것이지만.. 점점 많은 기업들이 전환하는 추세입니다.) 누군가는 이러한 서버를 생성하고 설정해야 합니다. 그리고 애플리케이션이 실행될 수 있도록 환경을 준비해야 합니다. 데브옵스 엔지니어가 이렇게 서버를 설정하고 배포하도록 환경을 준비해야 합니다.
이런 서버들은 운영체제를 실행하며 일반적으로 Linux를 의미합니다. 이에 관해서는 차후에 한 섹션으로 다루도록 하겠습니다.
우리가 구성한 네트워크 및 환경이 다른 서비스들과 통신할 수 있도록 하기 위해서는 일정 수준의 네트워킹 및 구성에 대한 지식이 있어야 합니다. 이것도 일정 부분 데브옵스 엔지니어가 합니다. 이에 관해서는 차후 DNS, DHCP, Load Balancing 등에 대해서 자세하게 다루도록 하겠습니다.
이것도 알고, 저것도 알고
네트워크 또는 인프라의 스페셜리스트가 될 필요는 없습니다. 서버를 올리고, 실행시키고 상호 간 통신이 가능하도록 구성하는 방법에 대한 지식만 있으면 됩니다. 마찬가지로 개발자가 될 필요는 없습니다. 프로그래밍 언어에 대한 기본적인 지식만 있으면 됩니다. 하지만 어느 한 분야의 전문가로서 데브옵스 업무에 참여할 수 있고, 이럴 경우 다른 분야에 적응하기 위한 매우 좋은 기반이 될 것입니다.
또한 서버나 애플리케이션의 관리를 매일 인계받지 못할 수도 있습니다.
서버에 대해서만 이야기했지만, 애플리케이션이 컨테이너로 실행되도록 개발해야 할 수도 있습니다. 여전히 서버에서 실행하는 것이라곤 하나, 가상화, IaaS (클라우드 인프라 서비스)와 더불어 컨테이너화에 대한 이해도 필요합니다.
고차원적인 개요
한쪽에서 우리 개발자들이 애플리케이션을 위한 기능들을 (버그 수정과 더불어) 추가합니다.
다른 한쪽에서는 실제 애플리케이션이 실행되고 필요 서비스들과 통신하도록 구성 및 관리되고 있는 서버, 인프라 내지는 환경이 있습니다.
여기서 핵심은 버그 수정 및 새 기능이 추가된 버전을 운영 환경에 적용시켜 최종 사용자에게 제공하도록 하는 것입니다.
새 애플리케이션 버전을 어떻게 출시하는가? 이것이 데브옵스 엔지니어의 핵심 업무입니다. 테스트를 포함한 효과적이고 자동화된 방식을 지속적으로 고민해야 합니다.
여기서 오늘 학습을 끝내도록 하겠습니다. 부디 유용했기를 바랍니다. 앞으로 DevOps의 다양한 영역들과, 다양한 도구 및 프로세스들의 사용 이점에 대해서 깊이 있게 다루도록 하겠습니다.
자료
이곳을 학습 도구로 활용하기 위해 이 readme 파일에 추가적으로 자료를 덧붙이는 것에 대해 항상 열려있습니다.
그리고 아래 동영상들을 꼭 보시기 바랍니다. 또한 위에 설명드린 내용에서 많은 인사이트를 얻었으면 합니다.
- What is DevOps? - TechWorld with Nana
- What is DevOps? - GitHub YouTube
- What is DevOps? - IBM YouTube
- What is DevOps? - AWS
- What is DevOps? - Microsoft
여기까지 읽었다면 나에게 필요한 내용인지 아닌지 알 수 있을 것입니다. Day 3.