brunch

You can make anything
by writing

C.S.Lewis

by 이종우 Peter Lee Apr 08. 2020

[번역] DevOps 엔지니어가 되는 길

Journey to become a DevOps Engineer

담장

https://medium.com/@chandank.kumar/journey-to-become-a-devops-engineer-2a4cdfd1912c




DevOps를 사용하려는 경우 이 글에서는 목표를 달성하는 방법을 정확하게 안내합니다. 그리고 막 시작한 경우이 기사에서는 DevOps 엔지니어가되는 학습 과정에 대한 통찰력을 제공합니다.


시스템 관리자가 DevOps 엔지니어가 되는 것은 자연스러운 진화라는 일반적인 오해가 있습니다. 그러나 대부분의 경우 꼭 그런 것은 아닙니다.


그래서 이번 글을 통해서 시스템 관리자에서 DevOps로 경력 전환을 시작하기 전에 DevOps 및 관련 개념이 무엇인지 이해하겠습니다.


DevOps 란 무엇입니까?


DevOps는 도구가 아니라 다음 목표를 달성하는 데 사용할 수있는 일련의 원칙과 철학입니다 (Software Dev pipeline).  


조직 담장(조직내 이기주의)를 줄이려면

점진적이고 작은 변화를 구현하십시오

툴링 및 자동화 구현

동일한 실패가 다시 발생하지 않도록 주소를 실패로 승인


각각에 대해 자세히 살펴 보겠습니다.


조직  담장 (조직내 이기주의) 감소


전통적으로 개발자와 운영 팀은 서로 다른 설정과 사고 방식으로 작업했습니다. 개발자는 종종 운영에 대한 이해가 거의 없거나 전혀 없으며, 개발 프로세스가 진행되는 방식에 대한 이해가 거의없고 조직 사일로를 만들어 결국 많은 마찰을 일으 킵니다.

 전형적인 예는 개발자가 코드를 가능한 빨리 프로덕션에 배포하려고하는 반면, 운영 팀은 꾸준하고 느린 속도로 코드를 이동하여 운영 또는 프로덕션 실패를 줄이려는 경우 일 수 있습니다.


DevOps의 철학은 이 두 팀을 통합하고 서로 협력하며 운영 및 운영 팀의 개발자 이해 관계자를 개발 프로세스에서 이해 관계자로 만들도록 노력합니다. 서로 다른 프로세스를 이해하면 조직 사일로가 크게 줄어들어 개발에서 프로덕션 환경으로 코드가 더 빠르게 이동합니다.


점진적 변화 구현


애자일 기반 소프트웨어 개발 배포 메커니즘은 소프트웨어 개발 프로세스에서 작고 빠른 개발주기를 가져 왔습니다. 이 방법은 Big Bang 업그레이드를 한 번 수행하는 폭포수 모델과 다릅니다. 작고 점진적으로 변경하면 고유 한 이점이 있습니다.  


간편한 소프트웨어 배포

쉬운 롤백

손쉬운 추적 및 감사.


반대로 자동화되지 않으면 배포 파이프 라인에 많은 압력이 가해집니다.


툴링 및 자동화 구현

점진적인 변화가 그 이점으로 점진적으로 보였지만 완전히 자동화 된 파이프 라인이 없으면 이러한 유형의 구현을 관리 할 수 없습니다. 따라서 앞에서 언급 한 DevOps 프린시 펄을 구현하려면 자동화를 수행해야합니다. 광범위하게 자동화를 다음과 같이 분류 할 수 있습니다.  


자동화 구축

테스트 자동화

배포 자동화

모니터링 및 경고

실패 및 롤백 자동화


실패가 정상임을 수락


DevOps 철학의 또 다른 주요 원칙은 실패가 정상적인 것임을 인정하는 것입니다. 장애가 발생하면 조사하여 동일한 유형의 장애가 다시 발생하지 않도록해야합니다. 이 접근 방식은 인프라 리소스를 소프트웨어로 수정하여 코드 조각으로 수정하고 버전을 제어 할 수있는 경우에만 가능합니다.


어떤 기술이 핵심 기술인가

이제 시스템 관리자에서 DevOps로 전환하여 DevOps 엔지니어가되는 방법에 대한 주제로 돌아가서, 앞서 언급 한 철학과 사례를 기술과 도구로 변환해야합니다. 


핵심 기술 / 도구로 뛰어 들기 전에 먼저 개념을 세분화하겠습니다. 

배워야 할 개념 :  


개발 과정 이해

자동화를 통해 DevOps 엔지니어가 되십시오 (코딩 방법 배우기)

테스트 개념 및 테스트 자동화 이해

인프라 배치 자동화


개발 과정의 이해

시스템 관리자의 일상 업무에는 패치 적용 및 임시 스크립트 작성이 포함되므로 개발 수명주기 나 프로세스에 대한 이해가 거의 또는 전혀 없습니다.


소프트웨어 개발 프로세스는 부분적으로 프로그래밍 언어 또는 사용 된 플랫폼에 따라 다릅니다. 주로 두 가지 유형의 프로그래밍 언어가 있습니다.


컴파일 된 언어 및 빌드 개념 : 컴파일 된 언어는 기본적으로 시스템에 배포되거나 실행되기 전에 실행 가능한 바이너리로 변환해야하는 언어입니다.


이러한 언어의 개발 프로세스는 Java 또는 C / C ++와 같은 스크립팅 언어와 비교할 때 약간 복잡합니다. 관련된 일반적인 단계는 다음과 같습니다.  


편집 (Compilation)

링킹 (Linking)

패키징 (Packaging)


개발자가 Java로 코드를 작성할 때 종종 빌드되는 동안 해결해야하는 여러 라이브러리가 포함됩니다. Apache Maven은 Java 환경에서 가장 많이 사용되는 빌드 자동화 도구입니다. 따라서 이해하고 효율적으로 빌드하려면 핵심 Java 플랫폼과 maven이 빌드 작업을 수행하는 방법을 이해해야합니다.


따라서 빌드 자동화에 필요한 기술을 나열하려면 다음을 수행하십시오.  


자바 플랫폼의 이해

아파치 메이븐

젠킨스

소스 제어를 위한 Git


스크립팅 및 해석 언어 : PHP, Python 및 JavaScript와 같은 언어. 그들은 컴파일 할 필요가 없으며 단순히 기계에서 실행될 수 있습니다. 이러한 언어에는 컴파일 또는 연결 복잡성이 없지만, 실행 환경에는 이미 패키지가 사전 설치되어 있어야합니다. 예를 들어, Python 또는 Ruby의 경우 종속 라이브러리 또는 모듈을 실행하기 전에 상자에 사전 설치되어 있어야합니다.


자동화를 통해 DevOps 엔지니어가 되십시오


시스템 관리자가 일상 업무에서 자동화를하지 않는다고 말하는 것은 사실이 아닙니다. DevOps 철학에서 자동화 접근 방식은 자동화 자체가 아니라 핵심입니다.


자동화에 대한 접근 방식은 누구나 자동화를 실행할 수있는 방식이어야합니다. DevOps 기반 자동화에 관한 한, 가능하면 임시 자동화는 피해야합니다.


Ad-hoc 자동화는 종종 전체 프로세스에 대한 전체적인 접근 방식없이 매우 작은 문제를 해결하기 위해 수행됩니다. 예를 들어, sysadmin이 5 개의 Linux 서버에 10 개의 패치를 배포하려는 경우이를 신속하게 수행 할 수있는 작은 스크립트를 작성하려고합니다.


DevOps 세계에서 이러한 자동화 기능은 다음과 같이 자동화 된 방식으로 수행되어야합니다.  


누구나 실행할 수 있습니다

다른 모듈과 쉽게 연결

입력 및 출력 인터페이스 정의

스크립트의 변경 사항 추적 (git-source control)


자동화를 자동화해서는 안된다는 말이 있습니다.


자동화하려는 경우 코딩 할 준비가되어 있어야합니다. 한 자동화를 다른 자동화로 자동화 할 수 없습니다. Software dev 접근 방식으로 자동화를 찾고 있다면 체크 아웃해야합니다.  


DevOps 용 Python

DevOps 용 루비

DevOps를위한 Perl


여기서 강조하고 싶은 핵심은 성공적인 DevOps 자동화 개발자가되기 위해서는 모든 기능을 갖춘 언어를 배울 필요가 없다는 것입니다. 예를 들어, 파이썬은 매우 다양하고 범용적인 프로그래밍 언어입니다. 웹 개발 데이터 과학 빅 데이터 또는 무엇이든 사용할 수 있습니다. 왜 학습 파이썬은 기본 개념을 올바르게 익히고 DevOps 자동화에 적합한 모듈을 시작해야합니까? 학습 곡선을 크게 줄이고 생산성을 개선하는 데 도움이됩니다. .


DevOps Automation을위한 록 스타 Python 개발자 일 필요는 없습니다.


테스트 개념 및 테스트 자동화 이해


소프트웨어 테스트는 모든 소프트웨어 제공주기의 큰 부분입니다. 고품질 소프트웨어를 달성하기 위해 전문 테스트 엔지니어는 소프트웨어의 기능을 검증 및 검증하고 프로덕션에 가기 전에 버그를 발견 할 테스트 사례를 설계하고 개발합니다. 대부분의 다른 직무와 마찬가지로 테스트 자동화 엔지니어 역할은 기술 및 개발자 중심으로 발전하고 있습니다. 이는 테스트 자동화 엔지니어가 전통적으로 사용하던 도구가 소프트웨어 인터페이스 변경 요구를 충족시키기에 충분하지 않다는 것을 의미합니다.


이제 점점 더 많은 테스트 팀이 텍스트 기능을 개선하고 개선 할 수있는 개발 기술을 갖춘 사람들을 찾고 있습니다. 그러나 실제로 대부분의 테스트 팀은 DevOps 엔지니어가 테스트 사례를 자동화하도록 돕고 있습니다. 이러한 시나리오에서 DevOps 엔지니어는 다재다능하고 최소한 기본 테스트 이해를 통해 팀이 테스트 사례를 코딩하거나 자동화 된 방식으로 배포 할 수 있도록 테스트 사례를 코딩 할 수 있어야합니다.


따라서 기술에 관한 한 DevOps 엔지니어가 되려면 다음을 갖추어야합니다.  


기본 테스트 개념

단위 테스트, 통합 테스트 카르마 사용자 승인 테스트

Jaunt, Python 단위 테스트와 같은 Carmen 단위 테스트 프레임 워크

Jenkins를 사용한 테스트 배포 자동화


인프라 구축 자동화 구성 관리


이는 인프라를 운영, 배포, 관리 및 관리하는 DevOps 엔지니어에게 가장 큰 영역 중 하나입니다. 점점 더 복잡 해지는 이기종 시스템 관리와 같은 더 많은 멀티 클라우드 및 하이브리드 클라우드 환경으로 이동함에 따라 이러한 인프라 관리에 대한 기존의 접근 방식은 더 이상 작동하지 않습니다.


효율적이고 확장 가능한 인프라를 확보하려면 완전히 자동화 된 구성 관리 도구를 최대한 활용해야합니다. 소프트웨어 개발 기술과는 달리, DevOps 엔지니어가 구성 관리 도구 중 하나에서 Rockstar 여야하는 구성 관리 기술과 관련하여 테스트 자동화 기술  


Ansible

Puppet

Terraform 


구성 관리 기술과 관련하여 DevOps 엔지니어는 Rockstar 여야합니다.


결론


우리가 알고 있듯이 DevOps 필드는 여전히 발전하고 끊임없이 변화하고 있습니다. 이 분야에서 성공하기 위해 알아야 할 모든 기술 / 도구를 모두 나열하는 것은 거의 불가능하지만, 핵심 기술에 대한 기본 청사진을 항상 만들 수 있습니다. 앞서 언급 한 개념, 철학 및 도구는 일부에게는 압도적이며 일부는 너무 적을 수 있습니다. 실제로, 어디에서 시작하거나 언제 키를 시작할지는 중요하지 않으며 일정 기간 동안 지속적으로 이러한 기술을 천천히 그리고 꾸준히 구축하는 것입니다.


이 기사에서 방금 언급 한 내용을 이해하고자한다면 정직하게 말하면 전체 시스템에 대한 기본 지식을 이해하는 데 3-6 개월이 걸리고 주요 영역 중 하나에 능숙 해지기까지 최대 1 년이 걸립니다. .


여러분 모두에게 행운을 빕니다.우리와 함께 여행을 시작하려면 다음 배치에 등록하십시오 : 

https://becloudready.com/journey-to-becoming-a-devops-professional/


(아래 URL 은 광고 입니다 도움이 되셨다고 생각하시면 클릭해주세요) 

손세정제 추천 https://coupa.ng/bwI56b

매거진의 이전글 [번역]17 가지 주요트렌드–전자상거래의 미래 2020

작품 선택

키워드 선택 0 / 3 0

댓글여부

afliean
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari