詳細検索

Vagrant, GitHub, Travis, Chef, OpsWorks와 함께 DevOps 시대에 민첩하고 확장 가능한 개발 환경을 구축하세요

아바타
글쓴이 平形大樹

Vagrant, GitHub, Travis, Chef, OpsWorks와 함께 DevOps 시대에 민첩하고 확장 가능한 개발 환경을 구축하세요
日本語에서 번역 • 원문 보기

안녕하세요. 오랜만이네요. 개발자의 평평한 모양이에요.

이 블로그를 방문한 모든 엔지니어들. 그리고 비엔지니어들.

정말 감사합니다. 우선, 이 글에는 코드나 명령줄이 없습니다.

서론

이번에 보내는 콘텐츠는 진정으로 확장 가능한 환경을 구축하고 운영하는 데 도움이 될 것입니다. 이 내용을 여러 차례 기사 시리즈로 전할 예정이지만, 이 시리즈를 읽고 실제로 적용했다면 이미 확장 가능한 환경에서 일하고 계실 것입니다.

이 시리즈에서는 필요한 도구의 설치와 사용법을 직접 경험할 수 있도록 보내드리겠습니다. 실제로 손을 움직이고 그것을 느끼는 것이 매우 의미 있다고 생각합니다. 이번 에피소드에서는 코드나 명령줄이 전혀 없습니다. 다음 에피소드에서는 점점 더 많이 드러날 것입니다. 그 전에, 카즈마사 오다의 "I have to like you"를 외치고 싶습니다.

이 글은 다음 용도에 적합하지 않습니다:

  • 평생 혼자 살 거야! 하루에 한 번 화장실 가는 데 열정적인 사람.
  • 미래는 생각하고 싶지 않아. 난 현재에 살고 있어! 일주일에 세 번 말하는 사람.

이 범주에 속하는 자들. 수고하셨습니다. 출구는 여기입니다.

다음 범주에 속한다면 이 글을 읽어보길 바랍니다.

  • 개발자 및 인프라 인력.
  • 새로운 프로젝트를 시작하는데 구조에 대해 걱정이 된다면.
  • 서버 수가 늘면 어떻게 해야 하지? 걱정하는 사람들.
  • 개발 인력이 갑자기 늘면 어떻게 해야 하지? 걱정하는 사람들.
  • DevOps확장 가능한 환경에 관심이 있지만 첫걸음을 내딛지 못하는 사람들.
  • 위의 연습을 시도했지만 좌절한 사람들.
  • 어떤 이유에서인지 개발 환경에서 실행되는 코드가 공개 환경에서 작동하지 않으며 홈으로 돌아갈 수 없습니다.
  • 회사 가기 싫어, 실제 반사가 무서워서.
  • 서버가 다운될까 봐 밤에 잠을 못 자는 사람들.
  • 미래를 생각하면 계속 불안해지고, "어쨌든 학교도, 집에 가고 싶지도 않아."라고 말하지 않을 수 없어요 - 오자키 유타카의 흥얼거림.

그러니 당신의 꿈의 문을 열어봅시다.

유산 개발 및 운영

  • 개발 환경과 공공 환경의 건설은 건설 절차에 따라 수작업으로 설치됩니다.
  • 공공 환경에서 서버 확장은 하나씩 수동으로 조정됩니다.
  • 패치 적용과 버전 업그레이드는 절차에 따라 하나씩 수동으로 수행됩니다.
  • 버전 관리가 없으며, 각 사용자가 FTP를 통해 수정 파일을 업로드합니다.

슈퍼맨은 인간의 실수 없이, 스트레스 없이 이걸 조작할 수 있는 사람이야. 그리고 모든 개발 및 운영 멤버는 나처럼 슈퍼맨이어야 해. 나는 평범한 사람을 위해 할 수 없어.

현대 개발 및 운영

오늘날 급변하는 서비스 수요를 견디기 위해서는 여러 가지를 간소화해야 합니다.
빠르게 출시하고, 사용자 반응을 보고, 사양을 변경하고, 즉시 반영한 뒤 다시 공개하세요. 이런 일들도 필요합니다.
최근 개발과 운영의 자동화는 다양한 미디어 기사에서 소개되며 뜨거운 화제가 되었습니다. 하지만 자동화가 실제로 어디까지 갈 수 있을까요?

  • 버전 관리
  • 환경 건설
  • 보안 패치
  • 버전 업그레이드
  • 자동 스케일
  • 자동화 테스트
  • 자동 배포
  • 개발 환경의 분포

모든 걸 다 하는 건 어렵죠? 하지만 해내면 **분명히 더 행복해질 거예요. **

DevOps란 무엇인가요?

DevOps란 무엇인가요?

DevOps(DevOps [1])는 소프트웨어 개발 방법 중 하나입니다. 이는 개발과 운영을 결합한 'bag' 단어로, 개발자와 운영 담당자가 함께 일하고 협력하는 개발 방식을 의미합니다. 출처 인용: 위키

이런 말도 있다고 전해집니다.

DevOps의 관심사는 역할 차이로 인해 종종 충돌하는 개발과 운영이 함께 협력하고 같은 목표를 향해 나아가는 환경을 만드는 것이며, 저는 도구와 문화가 그런 환경을 만드는 데 중요하다고 믿습니다. 출처 인용: @IT

제 말로는, 어느 정도는 개발과 운영을 모두 할 수 있게 되자고 합니다! 그게 이야기입니다.

DevOps

DevOps는 애자일 프로세스와도 관련이 있습니다. 과거에는 오랜 기간 동안 워터폴 형태의 대규모 프로젝트가 많았기 때문에, 책임자 각자의 역할을 명확히 구분하고 효율적인 프로젝트 시스템을 구축하는 것이 좋다고 여겨졌습니다.

하지만 오늘날은 어떨까요? 더 애자일 프로젝트가 있지 않나요? 인건비를 많이 쓸 수 없기 때문에 소수의 인원으로 프로젝트를 시작해야 하는 경우가 많죠, 맞죠? 그럴 경우, 만약 미래에 성공해서 개발 및 운영 인력이 늘거나 서버 수가 늘어난다면, 어떻게 대처할 것인가요? 서버 구성이 변경되면 소수의 단계로 모든 환경에 적용해야 할 것입니다. 그렇지 않으면 누군가는 힘들어해야 할 것입니다. 저는 DevOps가 모든 관련자가 행복하기 위해 필수적이라고 믿습니다.

"나는 단지 아름다운 것만 말하는 게 아니야!" "개발하고 운영할 수 있다는 게 슈퍼맨 아니야?" 네. 그런 사람은 많지 않은 것 같아요. 개발과 운영은 서로 가까워요. 그게 바로 그 의미입니다. 운영팀에게 새 서버를 만들거나 서버를 늘리거나 모니터링하라고 요구하는 대신, 개발 측에서 필요할 때 직접 할 수 있습니다. 요즘은 클라우드가 확산되면서 한 번의 터치로 올리거나 내리고 늘리거나 줄일 수 있습니다. 서버 구성을 프로그래밍 가능하게 만드는 도구들이 있습니다. 필요한 미들웨어 설치, 구성 변경, 개발 환경 업데이트, 공공 환경과 로컬 개발 환경 통합, 최신 개발 환경을 한 번에 배포하는 것.

하, 하, 하,

누구나 빠르게 다 할 수 있어! (노○무라 의회 의원의 기자회견 스타일)

애자일 개발

애자일 소프트웨어 개발(애자일 소프트웨어 개발)은 소프트웨어 공학에서 빠르고 적응적인 소프트웨어 개발을 수행하는 경량 개발 방법들의 집합을 통칭하는 용어입니다. 출처: 위키

애자일 개발의 특징은 다음과 같습니다:

  • 요구사항, 설계, 개발, 테스트, 출시를 한 바퀴 같은 짧은 시간 내에 완료하고 사이클을 반복합니다
  • 소규모 그룹이 많으며, 백엔드 엔지니어, 프론트엔드 엔지니어, 서버 엔지니어가 서로의 영역을 담당합니다.
  • 칸반 보드 작업 관리 등.
  • 문서보다는 코드 이동에 집중하세요.

등등. 왜 이런 과정을 거치는 걸까요? 답은 빠르게 변화하는 사용자 요구에 신속히 대응하는 것입니다. 경험하는 데 시간이 오래 걸릴수록 나중에 개선하는 데 더 많은 시간이 걸립니다. 우리는 빠르게 다가오는 기술 혁신을 따라가야 합니다. DevOps라는 개념은 애자일과도 밀접하게 관련이 있습니다.

애자일은 테스트와 리팩토링을 중요하게 생각합니다. 빠른 출시와 테스트가 필수적입니다.

확장 가능한 것은 무엇인가?

확장 가능한 것은 무엇인가요?

확장성은 통신 및 소프트웨어 공학에서 시스템, 네트워크 또는 알고리즘의 바람직한 특성 중 하나로, 사용자와 업무 증가에 적응할 수 있는 능력과 정도를 의미합니다.[1] 출처: 위키

확장성은 때때로 시스템 자원과 관련이 있는데, 물론 그것도 그렇습니다. 클라우드 서버를 사용하면 필요할 때 원하는 만큼 늘거나 줄일 수 있습니다. 또한 자동으로 할 수도 있습니다.

인사 분야에서도 확장성이 필요하다고 생각합니다.

프로젝트 구조도 필요에 따라 유연해야 합니다. 그때 무엇을 생각해야 하나요? 비용입니다.

  • 개별화로 인한 노하우 공유 비용
  • 개발 비용, 환경 건설 시간
  • 절차 공유 비용
  • 신입 교육 비용

인력 교체가 점점 심해지고 있기 때문이죠?

  • 프로젝트에 참여하는 누구나 신속하게 개발을 시작할 수 있도록 합니다.
  • 내일 떠나도 프로젝트가 흐트러지지 않게 해.
  • 수십 명이 갑자기 개발에 참여해도 당황하지 마세요.

여기서 힘들겠지? 하지만 그렇게 있는 게 낫다고 생각해, 그렇지?

환경의 다양화

사용자 요구는 과거보다 점점 더 많이 변하고 있습니다. 이는 기술 발전의 이점과 관련이 있습니다.

  • 기기: PC, 스마트폰, 웨어러블 기기. 이들은 애플리케이션의 사용 시나리오를 크게 변화시킬 것입니다.
  • 인프라 라인이 빨라졌고, 처리할 수 있는 정보량도 크게 증가했습니다. 또한, 사용 시나리오 수가 증가하여 위치에 관계없이 필수입니다. 그 결과, 비즈니스 요구사항이 빠르게 변화하고 있습니다.

이러한 문제를 해결하기 위해 개발 언어와 도구들은 점점 더 효율적이고 빠르게 변화하고 있습니다.

변경 신청

지금까지 공통적으로 어떤 것들이 있다고 생각하나요?

변화야. **극적인 변화야. **

사원의 아들로서 여기서 말하고 싶은 것은 모든 행동은 무상하다는 것입니다.

무상함(sabbe-saMkhaaraa-aniccaa, सब्बे संखारा अफिच्चा)은 불교 용어로, 이 세상의 모든 실존 존재는 본질과 본질 모두에서 항상 변화와 변화를 겪으며, 존재는 잠시라도 그 정체성을 유지할 수 없다는 뜻이다.
인용 출처: 위키: 어제는 당연하게 여겨졌던 것들이 오늘날에는 시대에 뒤떨어진 것들이 있다고 생각합니다.

  • 기술 혁명
  • 서비스 요청의 급격한 변화
  • 인원 교체

이러한 다양한 극적인 변화에 어떻게 대응하시나요?

그것에는 두 가지가 필요하다고 생각합니다.

  • 변화를 수용하는 사고방식
  • 변화에 적응하는 방법

시간이 날 때 이 사고방식에 대해 다시 쓸 것입니다. 이번에는 변화에 적용하는 메커니즘에 대해 이야기하겠습니다.

자동화

자동화에는 관심이 없습니다. 그렇게 생각하는 사람이 있나요?

하지만 엔지니어로서 이미 자동화를 하고 계시잖아요.

"응?"

"나에 대해 뭘 안다고!"

그렇게 생각했지. 그럼 너무 화내지 말고, 타이야키 먹으면서 침착하게 들어.

自動化

모든 엔지니어(일부 나쁜 사람들을 제외하고)는 세상을 더 편리하고 풍요롭게 만들기 위해 존재합니다. 저는 목표가 더 많은 사람들에게 기회와 경험을 제공하여 세상을 풍요롭게 하는 것이라고 믿습니다. 예를 들어, 다음과 같은 효율성이 있습니다.

  • 엄청난 속도로 방대한 데이터를 복잡하게 처리하고, 데이터를 읽기 쉬운 형태로 다듬는다.
  • DB를 활용해 데이터를 효율적으로 조직하고 빠르게 검색할 수 있습니다.
  • 디지털 프로세스를 이전에 아날로그에서 수행하던 더 빠르고 번거로운 절차로 대체한다.
  • 장소나 시간에 상관없이 상대방에게 당신의 의도를 전달하세요. 연결하세요.
  • 오프라인 매장에 가지 않고도 온라인 쇼핑이 가능하도록 합니다.

등등. 어떻게 생각하세요? 이미 정기적으로 이와 관련된 자동화를 하고 있지 않나요? 아니면 무언가에 관여하고 있나요? 맞아요. 사용자에게 가치를 제공하는 것은 자동화의 결과입니다. IT 엔지니어링은 자동화(효율성)를 위한 분야입니다. 그렇다면 왜 우리 작업을 자동화하지 않나요?

우리는 자동화로 사람들을 행복하게 만드는 일을 하고 있습니다. 그렇다면 **우리 자신도 자동화로 더 행복하게 일해봅시다! **

여기 필요한 도구들이 있습니다.

DevOps 시대에 민첩하고 확장 가능한 환경을 가능하게 하는 도구들을 설명하세요

기다리게 해서 죄송합니다! 이제 제목에 나와 있는 Vagrant, GitHub, Travis, Chef, OpsWorks에 대해 이야기해 보겠습니다. 각 도구에 대해 간략히 설명하겠습니다. 각 에피소드마다 코드와 함께 이 도구들을 자세히 설명하겠습니다.

DevTools
  • Vagrant는 가상 머신을 구축하는 도구입니다. 로컬에서 구축할 때 유용합니다. VirtualBox가 좋다고 생각한다면, 나중에 어떤 것이 유용한지 설명하겠습니다. 곧 빠져들게 될 겁니다. - GitHub Git 저장소를 통해 엔지니어 커뮤니티가 형성됩니다. GitHub는 Pull Request라는 훌륭한 발명품 덕분에 개발팀에 좋은 문화를 심어줄 수 있습니다.
  • Travis CI 클라우드 서비스. GitHub와 통합하여 푸시될 때마다 테스트를 실행하고 결과를 GitHub에 알립니다.
  • Chef는 구성 관리 도구입니다. 서버는 코드로 관리할 수 있습니다. 몇 번을 실행하든 항상 같은 상태인지 확인할 수 있습니다. 아직 sshing, 설치, 설정 중이라면 Chef를 사용하세요.
  • OpsWorks는 AWS의 배포 도구 중 하나입니다. 확장 가능한 환경을 구축하고 배포를 자동화하는 데 도움을 주는 강력한 도구입니다. 자세한 내용은 추후 기사에서 설명하겠습니다.

왜 그렇게 골칫거리를 해?

그렇게 생각했잖아. 답은 하나뿐이야. **모든 것은 너와 네 주변 사람들이 행복하기 위한 거야. **

요즘 개발 언어, 프레임워크, 서버 엔지니어링은 점점 더 다양해지고 있습니다. 그리고 그 속도는 더 빨라질 것입니다. 하지만 두려워하지 마세요.

이 도구들이 어떻게 사용되고 어떻게 생각하는지 관심이 있다면, 이 아이디어는 확산되어 미래로 이어질 것입니다. **IT 엔지니어링의 미래를 밝게 밝게 할 것입니다! **

끝까지 읽어주셔서 정말 감사합니다 (반쯤 울면서)

다음에

Vagrant와 함께 개발 환경을 구축하는 것에 대해 이야기해봅시다. 모두 행운을 빕니다. 안녕히 계세요.

Related Articles