본문 바로가기

IT Note/Cloud

Cloud 기본 개념 파헤치기 - (3/3) 각종 용어에 대한 설명

 '클라우드'를 새로운 기술이나 트렌드라고 소개하기엔 클라우드는 이미 등장한 지 오래 되었고, 널리 쓰이고 있으며, 점점 표준이 되어가고 있는 기술인 것 같습니다. 당연히 클라우드에 대해서 잘 알고 계신 전문가분들도 많으시고요.

 하지만 이제 막 IT업계에 발들이거나, 넓고 얕은 지식으로써 클라우드에 대해 알고 싶거나, 비전공자가 처음 클라우드를 이해할 때 도움이 되고 싶으신 경우라면 이 포스팅을 읽어 보시길 권해드리며, 아래와 같은 내용으로 Cloud 기본 개념 3부작 시리즈를 연재하려고 합니다.

~Cloud 기본 개념 이해 3부작~
1. Cloud 생기초
2. 최근 동향
3. 각종 용어에 대한 설명

3. 각종 용어에 대한 설명

모든 산업군마다 공통된 것이겠지만, IT산업군에도 굉장히 많은 용어가 있습니다. 개인적으로 생각하는 IT전문용어가 어려운 점은 여러 분야에서 각자 발전하다 보니 똑같은 걸 다르게 부르기도 하고, 같은 단어로 표현하지만 뜻은 다른 경우가 많다는 점입니다. 또 새로운 기술이 갑자기 나오는 게 아니라 과거 존재하던 기술이나 개념들이 발전해왔기 때문에 전체를 이해하고 있지 않으면 부분을 알기 어렵습니다.

클라우드 영역 또한 공부를 하면서 정말 많은 용어들이 꼬리에 꼬리를 물고 연결되어 있어 이해하기 어려웠는데요, 그래서 이번 포스팅은 클라우드와 관련된 몇 가지 용어들을 한데 모아서 정리해 보려고 합니다. 여러 가지 용어들을 한번에 나열하여 대략적으로 설명할 예정이라 하나 하나 깊이있게 다루지는 못할것 같습니다. 관심있는 영역이 있으면 해당 용어에 관해서 깊이있게 설명한 다른 자료를 참고하시면 좋을 것 같습니다.


1) 클라우드 네이티브(Cloud native)

클라우드의 주요 특성을(확장성, 유연성 등) 잘 활용할 수 있도록 설계된 어플리케이션입니다.

일반적으로 기존 시스템에서 사용되던 어플리케이션은 여러 가지 이유로 클라우드상에서 효율적이지 못한 구조입니다. 따라서 클라우드가 가진 장점들을 100% 활용하기 어렵기 때문에 개발자들은 이를 개선하기 위해 여러 가지 방법들을 사용합니다. MSA 아키텍쳐를 채택하고, 애자일(Agile), DevOps, 12-factor methodology와 같은 방법론으로, 컨테이너, 쿠버네티스, CI/CD 툴체인과 같은 기술들을 사용합니다.

 

2) MSA

하나의 어플리케이션을 소규모 서비스로 쪼개서 개발하는 방식입니다. 각각의 서비스는 독립적으로 작동하며, API를 통해 서로를 호출합니다.

모놀리틱 구조와 MSA의 비교

MSA의 특징을 간단히 살펴보면 모놀리틱 구조에 비해 한 서비스의 코드 규모가 작기 때문에 빠른 주기로 개선이 가능하며, 각각 서비스가 독립적이므로 필요한 만큼 자유롭게 확장 혹은 축소할 수 있고, 한 서비스의 장애와 무관하게 다른 부분이 정상적으로 기능하기 때문에 장애가 전체 어플리케이션에 미치지 않는다는 점이 있습니다.

MSA가 최근의 트렌드이지만 만능은 아닙니다. 효율적으로 서비스를 잘 나누어야 하는데 이 작업이 쉽지 않을 뿐더러 여러 개로 쪼개진 서비스를 모두 관리해야 하기 때문에 운영 측면에서는 일이 더 많을 수도 있습니다. 따라서 그동안 잘 활용되지 않았으나 독립적으로 작동하는 시스템을 운용하기 적합한 클라우드 인프라 기술과, 여러 시스템을 자동화해서 관리할 수 있는 자동화 기술이 발전하면서 관심도가 올라가고 있는 아키텍쳐입니다.

 

3) 애자일 개발방식

개발 환경과 기술의 변화와 함께 시스템의 변화 주기가 빨라지게 되었고, 전통적인 개발 방식(폭포수 모델, 나선 모델 등)의 한계를 극복하고자 여러 가지 시도를 하게 되었습니다. 그 과정에서 여러 방법론이 등장했습니다. 그리고 하나의 사상을 기준으로 정리되었고, 그 사상을 애자일 소프트웨어 개발 선언문으로 정리했습니다. 전통적 개발 방식과 가장 큰 차이점은 철저하게 계획된 문서를 통한 개발이 아니라, 지속적으로 프로토타입을 개발하며 조금씩 필요한 수정을 가한다는 부분입니다.

애자일 방식의 종류로는 스크럼(Scrum), 익스트림 프로그래밍(XP), 디자인 씽킹, SAFe(Scaled Agile Framework) 등이 있습니다.

 

4) DevOps

전통적으로 IT는 개발과 운영이 분리되어 있었습니다. 하지만 IT가 비즈니스에 미치는 영향이 커지고 변화 주기가 빨라지는 등 여러 가지 기술적, 시대적 변화에 따라 결국 비즈니스 현업과 IT운영, IT개발의 협업이 긴밀해져야 할 필요성이 커졌습니다. 이런 상황에서 개발팀과 운영팀이 하나의 팀으로 일하는 조직구조와 문화가 등장하게 되었고 이를 DevOps라고 부릅니다.

 

5) 12-팩터 방법론(methodology)

클라우드 네이티브 앱을 개발하기 위한 방법론으로, 프로젝트 비용과 시간을 최소화하고 효율화하는 방법을 고민한 결과 정리하게 된 방법론입니다. 12개의 팩터는 아래와 같습니다. 보다 자세한 정보는 여기를 참조하시면 좋을 것 같습니다.

Ⅰ. 코드베이스 : 버전관리되는 하나의 코드베이스를 다수 배포함.
Ⅱ. 종속성 : 종속성은 명시적으로 선언하고 분리함.
Ⅲ. 설정 : 설정은 환경에 저장함.
Ⅳ. 백엔드서비스 : 백엔드서비스를 연결된 리소스로 취급함.
Ⅴ. 빌드, 릴리즈, 실행 : 빌드와 실행단계를 철저히 분리함.
Ⅵ. 프로세스 : 앱을 하나 이상의 무상태(stateless) 프로세스로 실행함.
Ⅶ. 포트바인딩 : 포트바인딩을 통해 서비스를 공개함.
Ⅷ. 동시성 : 프로세스 모델을 통해 확장함.
Ⅸ. 폐기가능 : 빠른 구동과 우아한 종료를 통해 안정성을 최대화함.
Ⅹ. 개발/운용환경 일치 : 개발, 스테이징 및 실운용 환경을 최대한 유사하게 유지함.
XI. 로그 : 로그를 이벤트 스트림으로 처리함.
XII. 관리 프로세스 : 관리 작업을 일회성 프로세스로 실행함.

반응형