ARGOS 필요성에 대한 고찰
by Jerry Chae
4차 산업혁명의 의미
‘사고의 흐름을 따라가는 4차 산업혁명의 의미’ (Korean) 에서도 나타나듯이 1차 산업혁명의 키워드는 증기, 2차 산업혁명의 키워드는 전기, 3차 산업혁명의 키워드는 통신이었고 4차 산업혁명의 키워드는 무인입니다. 무인이라는 것은 자동화를 의미하고 이는 제조업과 같은 곳에서의 로봇을 통한 무인화의 의미도 있지만 소트트웨어에서의 무인화도 그것 이상으로 중요합니다. 하드웨어의 경우 이미 아디다스 주문 생산 시스템에서는 십 여명이 수 십만 켤레 이상의 주문 생산을 자동화하여 생산하고 있습니다. 결국 3차 산업을 거쳐 4차 산업을 가면서 주도권을 잡는 것은 하드웨어 보다는 소프트웨어라 할 수 있습니다.
- GE도 2017년 소프트웨어 회사로 변환하겠다고 선언
- IBM도 이미 2000년대부터 하드웨어 회사에서 소프트웨어, 서비스 회사로 변환
그런데 아이러니컬 하게도 현재까지 하드웨어와 소프트웨어 중 더 무인화가 되어 있지 않은 곳은 소프트웨어 부분입니다. 아직도 어떤 소프트웨어를 개발하기 위하여 개발자가 개입되어야만 하며 그 결과물을 테스트하고 릴리즈(release), 배포(deployment), 운영(operation) 등에 사람이 개입되어야만 합니다.
그러면 이런 상황에서 최대의 경쟁력은 무인화라는 완전 자동화가 아니더라도 최소한의 인원으로 최대의 시스템을 개발하고 운영하는 것이야 말로 4차 산업혁명에서의 최대 경쟁력이라 할 수 있습니다.
- Today’s demands are simply not met by yesterday’s software architectures. from https://www.reactivemanifesto.org
- 모바일 시대의 사용자의 변화는 기존의 온라인에서와 다른 개발 방법, 아키텍쳐 등을 요구하게 됩니다.
1784 | 1870 | 1969 | 2020 | |
산업혁명 | 1차 | 2차 | 3차 | 4차 |
에너지 | 석탄 | 석유 | 전기 | 재생에너지 |
소통 | 전신 | 전화 | 인터넷 | 사물인터넷 |
운송 | 철도 | 자동차 | 스마트운송 | replicator (로컬생산) |
영향력 | 소비재와 경공업 | 전기화학, 중화학공업 | IT | Every industry |
패러다임 | 기계 | 대량생산 | 디지털 | 인공지능 |
값어치 | code | voice | information | Data |
생산방법 | 증기기관으로 인한 공장의 기계화 | 작업 표준화와 분업 대량생산 시대 | 산업용 로봇의 자동화 생산성 혁명 | AI 자동화 다품중 소량생산 |
이러한 패러다임은 기존의 전통적인 방식의 제조 방법에서부터 결국 자동화를 통한 소량 다품종 생산으로 고객의 다양한 요구를 만족시키는 기업만이 살아남을 것을 강요합니다. 10년전인 2007년에 글로벌 시가 총액 5대기업이 2017년 현재 어떻게 변화했는가가 이를 대변합니다.
Rank | 2007 | 2017 |
1 | PetroChina | Apple |
2 | ExxonMobil | Google Alphabet |
3 | GE | MS |
4 | China Mobile | Amazon |
5 | ICBC (Industrial and Commercial Bank of China) |
또한 하드웨어 기반의 회사가 쇄퇴하고 소프트웨어 중심의 회사가 선두에 나서고 있음을 알 수 있습니다. 오히려 소프트웨어 회사가 하드웨어 회사를 인수합병하는 현상이 많이 일어나고 있는 현실입니다. 결국 위와 같이 변화하는 패러다임을 맞추기 위하여 디지털 트랜스포메이션을 하지 않는 기업은 사라지고 있고 사라지게 될 것입니다.
DevOps의 필요성
위에서 처럼 소프트웨어 기반의 디지털 트렌스포메이션 중에서 가장 중요한 부분 중의 하나인 DevOps에 관하여 살펴보겠습니다.
우선 DevOps는 개발(Development)과 운영(Operation)을 최대한 자동화하고 끊김없이 개발과 운영을 반복하여 고객의 다양한 요구에 빠르게 대응하도록 하는 일련의 방법론을 의미합니다.
가장 앞서가고 있는 기업 (Unicorn Company)의 DevOps 관련 내용을 먼저 살펴보도록 하겠습니다.
Unicorn Company and DevOps
- 끊임없는 개선과 이터레이션(Iteration) 방식. 빠른 출시와 작은 이터레이션을 통해서 배움으로써 장기적으로 최고의 서비스를 만들려고 노력…
- 완성이 완벽보다 낫다. (Done is better than perfect.)
- 코드가 논쟁보다 낫다. (Code wins arguments.)
- 최고의 아이디어와 최고의 구현이 늘 이겨야 한다.
Google : Ten Things we know To Be True in Google
- Focus on the user and all else will follow
- It’s best to do one thing really, really well.
- Fast is better than slow.
- Democracy on the web works.
- You don’t need to be on your desk to need an answer.
- You can make money without doing evil.
- There is always more information out there.
- The need for information crosses all border.
- You can be serious without a suit.
- Great just isn’t good enough.
Amazon Leadership Principles
- Moving Fast
Netflix
- High Availability, but move fast.
- Tools encourage best practice, but freedom to do the right thing.
So, Big unicorn’s common goal,
- Moving Fast
- Focus on customer
Goal of DevOps
DevOps is not about a technology, DevOps is about a business problem.
위와 같이 유니콘 기업들은 빠르게 변화하는 비즈니스 환경과 문제에 대하여 DevOps를 통해 빠르게 고객의 요구에 대응하고 있다는 것을 알 수 있습니다.
Steps of DevOps
앞서 설명한 개발과 운영을 좀 더 자세히 세분화 하여 단계별로 살펴보겠습니다.
첫번째로 개발에는 다음과 같은 단계가 있습니다.
순번 | 단계 | 내용 | 자동화 여부 | 방법 |
---|---|---|---|---|
1 | Plan | 어떤 문제를 어떻게 해결할 것인가 계획 | No | 사람에 의해 계획. 다만 도와주는 도구 존재 |
2 | Code | 1단계의 계획된 것을 소프트웨어로 코딩 | No | 사람에 의해 코딩, 생산성에 크게 좌우됨 |
3 | Build | 2단계의 코딩을 실행가능한 구현체로 완성 | Yes | 대부분 CI/CD 툴을 이용하여 자동화 |
4 | Test | 3단계의 완성된 구현체가 계획된 대로 구동하는지 테스트 | No (일부 Yes) | 단위 테스트, API 테스트, UI 테스트 중 일부 자동화 가능 |
그리고 운영에는 다음과 같은 단계가 있습니다.
순번 | 단계 | 내용 | 자동화 여부 | 방법 |
---|---|---|---|---|
5 | Release | 4단계의 테스트 완료된 구현체를 해당 릴리즈로 고정 | Yes | 대부분 버전관리 시스템 등과 연동하여 릴리즈 생성 및 배포준비 |
6 | Deploy | 5단계의 준비된 릴리즈를 특정 운영환경으로 배포 및 서비스 준비 | Yes | 컨테이너나 오케스트레이션 툴을 이용하여 자동화 |
7 | Operate | 6단계의 배포된 서비스를 실제 운영 | Yes/No | 최대한 운영자의 개입 없이 많은 고객을 서비스하는 것이 목표 |
8 | Monitor | 7단계의 서비스를 운영하면서 여러 상태를 모니터링 | No (일부 Yes) | 주로 로그나 이벤트 모니터링을 통한 사람에 의한 직관 또는 분석으로 운영중인 시스템의 이상 부분 파악 |
더 중요한 것은 여기에서 개발과 운영이 끝나는 것이 아니라 DevOps의 연결고리가 생긴다는 것입니다.
모든 시스템은 7,8 단계에서 발생한 운영상의 문제점 또는 운영상 고객의 요구사항이 발생하기 마련입니다. 이런 요구사항이나 개선 사항은 바로 개발의 1단계로 적용됨으로써 고객의 요구사항을 최단 시간에 다시 반영하는 것이 바로 DevOps의 최대 장점이라 하겠습니다.
Measuring DevOps and IT Performances
- Deploy frequency (Note: NOT delivery)
- Mean Time to Recover (MTTR)
- Lead Time for Changes
company | Deploy Frequency | Deploy Lead Time | Reliability | Customer Responsiveness |
---|---|---|---|---|
Amazon | 23,000 / day | Minutes | High | High |
5,500 / day | Minutes | High | High | |
Netflix | 500 / day | Minutes | High | High |
1 / day | Hours | High | High | |
3 / week | Hours | High | High | |
Typical enterprise | Once every 9 months | Months or quarters | Low / Medium | Low / Medium |
From a book, The Phoenix Project (2013)
위에서 살펴볼 수 있듯이 이미 2013년 위와 같은 기업들은 DevOps의 순환고리를 적어도 하루에 한번 이상 돌고 있다는 것을 알 수 있으며 더 많이 돌 수록 더 경쟁력이 있다 할 수 있습니다.
자동화 또는 무인화
자동화의 필요성
이미 위에서 이야기 했듯이 개발과 운영이라는 순환고리를 빨리 돌 수록 더 경쟁력을 갖춘 회사라 할 수 있습니다.
그러면 어떻게 하면 더 빠른 고리를 돌 수 있을까요? 바로 무인화
또는 자동화
라 할 수 있겠습니다.
자동화의 어려움
만약 이전에 설명한 개발 4단계 및 운영 4단계 모두에서 사람의 개입이 하나도 없이 모두 자동화가 된다면 가장 빠른 순환고리를 돌 수 있지만 문제는 사람이 개입될 수 밖에 없는 단계가 있어, 이를 사람이 최소 개입하거나 또는 최대한 자동화를 할 수록 더 낫다는 것을 확인할 수 있습니다.
순번 | 그룹 | 단계 | 내용 | 자동화 여부 | 자동화 실현 |
1 | 개발 | Plan | 어떤 문제를 어떻게 해결할 것인가 계획 | No | 인공지능 등을 통하여 문제의 자동 해결 방법 비율 높임 |
2 | 개발 | Code | 1단계의 계획된 것을 소프트웨어로 코딩 | No | 아직까지 자동화된 코딩은 없으나 인공지능 등의 분야에서 논의되고 있음 |
3 | 개발 | Build | 2단계의 코딩을 실행가능한 구현체로 완성 | Yes | |
4 | 개발 | Test | 3단계의 완성된 구현체가 계획된 대로 구동하는지 테스트 | No(일부 Yes) | 개발된 구현이 이상 없는가? |
5 | 운영 | Release | 4단계의 테스트 완료된 구현체를 해당 릴리즈로 고정 | Yes | |
6 | 운영 | Deploy | 5단계의 준비된 릴리즈를 특정 운영환경으로 배포 및 서비스 준비 | Yes | |
7 | 운영 | Operate | 6단계의 배포된 서비스를 실제 운영 | Yes/No | 현재 서비스가 정상 동작하고 있는가? |
8 | 운영 | Monitor | 7단계의 서비스를 운영하면서 여러 상태를 모니터링 | No(일부 Yes) | 네트워크, 시스템, 자원 등 모든 부분에 문제 없는가? |
결국 위와 같은 8단계에서 당장 자동화를 실현하기 어려운 1단계 Plan 및 2단계 Code를 제외하고 나머지 세 단계인 Test, Operate, Monitor 를 어떻게 하면 최대한 자동화할 것인가가 실제 경쟁력의 핵심이라 할 수 있습니다.
What ARGOS can do!
위의 8단계에서 ARGOS가 할 수 있는 부분입니다.
순번 | 그룹 | 단계 | 내용 | 자동화 여부 | What ARGOS can do |
1 | 개발 | Plan | 어떤 문제를 어떻게 해결할 것인가 계획 | No | |
2 | 개발 | Code | 1단계의 계획된 것을 소프트웨어로 코딩 | No | |
3 | 개발 | Build | 2단계의 코딩을 실행가능한 구현체로 완성 | Yes | |
4 | 개발 | Test | 3단계의 완성된 구현체가 계획된 대로 구동하는지 테스트 | No(일부 Yes) | **제일 자동화 하기 어려운 사용자 UI를 시나리오화 하여 정상/비정상 동작하는 것을 자동화하고 그 결과를 리포트** |
5 | 운영 | Release | 4단계의 테스트 완료된 구현체를 해당 릴리즈로 고정 | Yes | |
6 | 운영 | Deploy | 5단계의 준비된 릴리즈를 특정 운영환경으로 배포 및 서비스 준비 | Yes | |
7 | 운영 | Operate | 6단계의 배포된 서비스를 실제 운영 | Yes/No | 특정 웹서비스 또는 앱에 대하여 사용자 입장에서 서비스를 동작해보고 정상/비정상을 탐지. 또한 세부적으로 네트워크, 백엔드 서비스, 렌더링 등의 비정상 구간 탐지 및 리포트 |
8 | 운영 | Monitor | 7단계의 서비스를 운영하면서 여러 상태를 모니터링 | No(일부 Yes) | 기존 GA와 같은 APM 영역은 주로 이 모니터링 영역을 커버하지만 ARGOS는 실제 운영 상태를 사용자의 입장에서 파악하므로 다른 영역으로 인지하여야 함! |
위와 같이 ARGOS를 통하여 4단계 Test 및 7단계 Operate를 자동화하고 그 부분에서 해결해야 하는 사이클이나 시간을 최소화 함으로써 전체 순환고리 사이클을 빨리 할 수 있습니다.