다잇소


[IT/트랜드] [디지털R&D랩] DevOps의 소개

2019.08.09
안녕하세요. 디지털R&D랩 김다솜 사원입니다.

이번 시간에는 적시성 있는 디지털 고객 경험을 위해 데브옵스(DevOps)에 대하여 소개하겠습니다.

먼저 데브옵스 배경에 대해 서술하면

1) 애자일 개발에 의한 계속적인 개발로의 변화

  • 현재 서비스들은 기능 추가가 빈번하게 발생하고 공정이 확실히 완료된 후 다음 공정으로 진행되기 때문에 워터폴 개발에서는 대응이 어렵습니다. 계속성 및 효율을 추구하기 위해 애자일 방법으로 개발 방식이 변화됩니다.워터폴


2)계속적인 개발로 인해 나타나는 운용 과제

  • 개발팀과 운용팀, 인프라팀은 각각 서로의 업무 영역에 신경 쓰지 않아 기능 요건 외에 모니터링이중화·백업·OS 등 비기능 요건을 소홀히 하는 문제가 발생합니다. 이러한 문제를 해결하고자 개발(Dev)과 운용(Ops)이 정보를 공유하는 가시화 과정이 형성되었습니다.


프로비저닝

두 번째는 변화에 대응하기 위한 도구입니다.

1) 추상화

  • 모든 리소스를 추상화하여 어떠한 플랫폼의 차이도 흡수하고, 전문성과 복잡성을 절감하는 것입니다. DevOps에서는 개발과 운용 간 긴밀한 연계를 필요로 하지만, 추상화에 의한 인프라의 전문성과 복잡성 배제 덕택에 개발 부문에서 인프라의 구성이나 설정으로 접근할 수 있게 됩니다.


추상화

2)자동화

  • 추상화된 리소스 이용의 자동화를 가능하게 하고, 전문성이나 개발과 운용을 하는 인적 부담을 줄여 주는 것으로 제공된 API를 통해 수작업으로 했던 작업을 모두 기계적으로 자동으로 수행할 수 있게 됩니다. 이후 소개하는 지속적 통합은 자동화를 이용하여 실현하는 대표적인 예


 

3)공통화

  • 공통의 버전 관리 시스템 커뮤니케이션 도구를 이용하여 정보를 가시화하고, 개발과 운용이 긴밀한 관계를 구축하는 것입니다.

  • 공통화의 종류는 개발과 운용의 연계에 필요한 이슈트래킹 시스템, 티켓이 해소되는 순간에 해당하는 커뮤니케이션 도구, 동일한 정보를 통해 설정, 수정이나 확인이 가능한 소프트웨어 구성관리 도구로 이루어져있습니다.


jira

4)지속적 통합

  • 개발과 운용의 개발·구축 방법 통일화로 개선 속도를 비약적으로 신장하는 것으로Code로 인하여 발생하는 문제를 조기에 발견하고 Build, 테스트에 관계된 작업 비용(Cost)을 낮추거나 테스트 상황을 가시화 하는 등의 커다란 장점을 가지고 있습니다. 대표적인 오픈소스 지속적 통합 도구로는 Jenkins, 클라우드의 지속적 통합 도구 서비스로 트래비스 CI와 서클 CI가 있습니다.


jenkins

5)모니터링

  • 리소스 정보를 일원화하여 가시화하고 개발과 운용이 긴밀하게 협력할 수 있는 관계를 구축하는 것으로 PDCA 사이클에서 Check(평가)를 하기 위한 개발입니다.널리 알려진 모니터링 도구로는 자빅스(Zabbix), 무닌(Munnin), JP1, Hinemos 등이 있고, 각 분야에서 뛰어난 미들웨어를 조합하는 대표적인 예로는 ELK Stack(Elasticsearch, Logstash, Kibana)이 있습니다.


모니터링

세 번재로 변화에 대응하기 위한 문화입니다. 목적의식, 공감대, 자율적 사고로 구성됩니다.

1)목적의식 :

  • 개발운용이 함께 서비스를 키워서 신속하게 비즈니스 요구에 부응하는 공통의 목표를 가지고 연계하기 쉽게 하기 위함입니다. 개발과 운용의 긴밀한 연계가 필요하기 때문에 목적의식 중요하기 때문입니다.


2)공감대 :

  • 개발과 운용이 서로의 팀 감정을 없애고, 받아들인 관계를 긴밀하게 하기 위함입니다.


3)자율적 사고:

  • 개발 부문과 운용 부문이 의뢰를 기다리는 것이 아니라 자율적으로 움직임으로써 공통의 목표 달성에 근접하기 위함입니다.


 

네 번째로 Release 최적화를 위한 CI입니다.

장점은 다음과 같습니다.

  • 첫 번째로 테스트 결과를 즉시 확인 가능하기 때문에 문제의 조기 발견과 그에 따른 품질 유지가 가능합니다.

  • 두 번째로 정형화된 작업의 흐름을 자동화기 때문에 작업 비용이 절감됩니다.

  • 세 번째는 변경 사항에 대한 진행과정과 결과를 팀원들이 공유할 수 있기 때문에 상황의 가시화가 가능합니다.


장점

 

CI의 구성요소로는 어플리케이션 정적 테스트, build, 동적 테스트로 이루어져 있습니다.

1)어플리케이션 정적 테스트

  • 실제로 어플리케이션을 기동하지 않고 실시할 수 있는 테스트로 언어에 따라 구문의 오류를 조사하는 Syntax check나 팀에서 정의한 코딩 규칙에 부합하는지 여부를 확인합니다.








































대응 언어 도구 이름 URL
Java FindBugs http://findbugs.sourceforge.net/
Java SonarQube http://www.sonarqube.org/
Ruby Rubocop http://github.com/bbatsov/rubocop/
JavaScript Closure Linter http://developers.google.com/closure/utilities
JavaScript ESLint http://github.com/eslint/eslint/
Golang Go Meta Linter http://github.com/alecthomas/gometalinter/

 

2)어플리케이션 Build

  • 의존성 문제로 인해 Build가 되지 않는 일도 있으므로 “Build가 가능하다”는 것 자체도 일종의 테스트라고 할 수 있습니다. Build 자체에 시간이 걸리기 때문에 Build를 위한 환경 설정이나 별도의 패키지가 필요한 경우도 있습니다.








































대응 언어 도구 이름 URL
Java Ant http://ant.apache.org/
Java Maven http://maven.apache.org/
Java Gradle http://gradle.org/
Ruby Rake http://github.com/ruby/rake
JavaScript Grunt http://gruntjs.com/
JavaScript gulp http://gulpjs.com/

 

3)어플리케이션 동적 테스트

  • 어플리케이션의 동작 자체를 확인하는 동적 테스트로 의도한 대로 “동작한다.”는 것이므로, CI의 가장 중요한 단계입니다. 어플리케이션의 품질에 자신감을 가질 수 있으며, 코드에 오류가 존재하는 즉시 그 사실을 알 수 있다는 장점을 가지고 있습니다.





























대응 언어 도구 이름 URL
Java JUnit http://junit.org/
Ruby RSpec http://rspec.info/
JavaScript PhantomJS + Jasmine http://phantomjs.org/

http://jasmine.github.io/
Mocha + chai http://mochajs.org/

http://chaijs.com/

 

마지막으로 Release 최적화를 위한 CD(지속적 딜리버리, Continuous Delivery)입니다.

  • 지속적 통합과 같은 일련의 작업을 자동화하여 연결하는 것은 동일하지만 테스트까지 자동화하는 지속적 통합과는 달리 운영 환경에 Release “직전”까지를 자동화합니다. 지속적 통합의 확장 개념이라고 할 수 있으며, “모든 테스트를 끝내는 것”이 목표이기 때문에 운영 환경에 Release 되기 전까지는 다양한 테스트를 하지 않으면 안됩니다.

































이름 목적
단위·통합 테스트 어플리케이션에 구현된 각 기능이 제대로 작동하는지 확인
보안 테스트 어플리케이션의 보안 취약점이 없는지 확인
성능 테스트 어플리케이션이 요구되는 성능을 낼 수 있는지 확인
부하 테스트 어플리케이션에 일정 이상의 부하를 주었을 때 문제가 일어나지 않는지 확인
장애 테스트 어플리케이션 및 주변 환경에 손상을 준 경우 사전에 정의해 둔 장애 대응 동작을 하는지 확인
인수 테스트 요청된 이미지대로 어플리케이션이 구현되었는지 확인
설정된 프로필 사진이 없습니다.
| Member
관심분야

TAG >
http://daitso.kbhub.co.kr/87103/ 주소복사
카테고리 레이어 닫기