그저 내가 되었고

☁️제 6회 2023 CLOUD Conference 참석 후기 + 내용 정리 본문

개발/BE 일반*개발 이야기

☁️제 6회 2023 CLOUD Conference 참석 후기 + 내용 정리

hyuunii 2023. 4. 13. 20:13

6 2023 CLOUD Conference

성공적인 구축 사례 중심의 Cloud Native 전략

 

다녀온 짤막 후기

이런 큰 규모의 컨퍼런스는 처음 다녀와본다(대표님 감사,,)

2주 전만 해도 진짜.. 1도 알아먹지 못했을 이야기들인데, 2주간 미친듯이 네트워킹과 클라우드에 대해 머리에 집어넣었고

결과 컨퍼에서 오가는 이야기가 어느정도 귀에 들어왔다.

내가 지금 다니는 회사는 이미 어느정도 클라우드 시스템이 빌드되어 있고,

앞으로 어떻게 더 스마트하고 안정적인 클라우드 네이티브를 구현할 수 있을지가 고민해볼만한 과제일 것.

 

+ 어떤 연사님이 "여기 오신 분들은.. 개발자나 엔지니어 분들이 아니라 비즈니스 결정권을 가지신 분들이실텐데요~" 하셨는데

ㅋㅋ... 속으로 '........ 전..ㅋ.... 그냥 햇병아리 백엔드 신입 개발자인데여....ㅎㅎ.......' 했음

++ 도시락이 호화롭고 맛있었다ㅎㅎ 간이 슴슴해서 놀랬다. 깔끔하고 맛났음!! 전복이 적당히 쫄깃하니 조리가 잘돼서 맛났음~!ㅋㅋㅋㅋㅋ

+++ 커피 브레이크 타임이 두 번 있었는데 그때 준비해주신 커피랑 과자도 맛있었음ㅋㅋㅋㅋㅋㅋㅋ 커피가 생각보다 너무 괜찮았다.

 

아쉬운건, 너무 당연하기도 한데, 네트워킹이 안돼있다보니 아는사람이 단 한명도 없었다ㅠ ㅠ

진짜 솔직히 말하면 심지어 거기 누가(그러니까 회사에서 뭐하는 사람들, 어느 부서에 있는 사람들이) 와있었는지도 모르겠따.......;;;

대체로 연령대가 높았고 연사님의 "..여기 오신 분들은 비즈니스 결정권 가지신 분들.."의 발언으로 봐서 직책 있는 분들인 것 같다.

앞으로 조금씩 조금씩 올라가서 이런곳에 찰떡같이 어울리는 사람이 될것이다!!!!(๑•̀ㅂ•́)و✧

 

 

 

클라우드 네이티브(Cloud Native) 대해

클라우드 네이티브란? 

클라우드 네이티브 컴퓨팅은 새롭게 등장한 혁신적인 애플리케이션 개발 방법론으로, 클라우드 기술과 혁신을 활용한 애플리케이션의 구축과 운영, 확장이 가능하다. 구체적으로 클라우드 네이티브 애플리케이션은 프라이빗, 퍼블릭 하이브리드 클라우드 환경 전체에 지속적인 개발과 자동화된 관리 환경을 제공하기 위해 특별히 설계된 애플리케이션을 뜻한다. 클라우드 네이티브는 클라우드 컴퓨팅의 장점인 유연한 아키텍처와 고확장성, 고가용성, 회복성, 탄력성 등을 활용하도록 설계되어 클라우드 네이티브 애플리케이션을 사용하면 기업의 민첩성과 운영 효율성을 높여 새로운 제품과 서비스 출시 기간을 단축할 있다. 또한 클라우드 네이티브 기술은 애플리케이션 운영뿐만 아니라 개발 유연성도 높인다. 이는 개발 프로세스의 적응성 개선과 나은 기술 혁신으로 이어진다.

탄탄한 대규모 웹시스템 구축에 필요한 요건은 개방성, 호환성, 민첩성, 자동화이다. 이를 충분히 만족시킬 아키텍처로 CNA(Cloud Native Architecture) 쉽게 떠올릴 있을 것이다. Microservices 통해 작은 서비스 단위의 개발과 배포로 민첩성과 확장성을 담보하고 DevOps 이들에 대한 자동화된 애플리케이션 라이프사이클 관리를 이루며 더불어 Container 활용해 플랫폼간 이동성, 이식성, 호환성을 담보할 있는 가상화 기술을 이용하는 것이다. 

국내 소프트웨어 개발 시장 트렌드로는 클라우드 네이티브 기술과 자동화(Automation) 기술의 부상 예측을 꼽을 있다. Customization 경향성이 높아 그동안 노동 집약적이었던 국내 소프트웨어 시장은 기업의 클라우드 네이티브 개발을 통해 향상된 사용자 경험, 확장성 증가, 운영 효율성 개선, 생산성 향상 등의 장점을 불러올 것으로 예측하고 있다. 이러한 클라우드 환경을 구현하기 위해서는 클라우드 네이티브로의 전환을 목표로 Smart Cloud 대한 전략을 세워야 한다.

 

클라우드 확산에 따라 주목받는컨테이너

클라우드 네이티브 애플리케이션은 조직 인력과 이들의 협업 프로세스를  자동화하는 것에서 시작한다. , DevOps 도입하여 공통의 목적과 주기적인 피드백을 통해 개발팀과 운영팀의 협업을 지원할 있다.

이때 컨테이너를 도입하면 이상적인 애플리케이션 배포 유닛 독립적인 실행 환경을 제공하여 이러한 프랙티스를 지원할 있다. DevOps 컨테이너 접근 방식에서는 하나의 대규모 릴리스 업데이트를 기다리는 것이 아니라 Micro Service처럼 여러 서비스가 탄력적으로 결합된 하나의 컬렉션으로 개발자가 애플리케이션을 쉽게 출시하고 업데이트할 있다.

 

 

 

컨테이너(Container) 대해

컨테이너란?

컨테이너란 가상화 기술의 일종으로 애플리케이션 실행에 필요한 파일과 라이브러리(lib) 패키지화한 , 필요할 때마다 이를 실행시켜 동일한 환경을 이용할 있도록 한다. 하드웨어를 기반으로 하는 서버 가상화 등은 Virtual Machine 이용해 게스트(Guest) OS 설치하고 애플리케이션을 구동해야 했던 것과 달리, 컨테이너는 OS 영향 받지 않고 실행 파일과 라이브러리만 가상화하기 때문에 VM 대비 가볍다는 장점이 있다.

 

컨테이너 활용의 장점

이로 인해 하이퍼바이저(Hypervisor) 게스트OS 인한 오버헤드(Overhead) 없으며, 컨테이너를 구동하면 안에 담긴 애플리케이션이 바로 시작되기 때문에 빠른 서비스 제공이 가능하다. 또한 인스턴스 증가 추가적인 설정을 필요로 하지 않는다는 것도 강점이다. 이처럼 컨테이너 기술은 민첩한 서비스 개발·배포를 위한 클라우드 환경에 적합하기 때문에, 클라우드가 성장하면서 빠르게 확산되고 있다. 컨테이너는 제품 수출입 시에 활용하는 철제 포장 용기인컨테이너 역할이 같다. 애플리케이션 실행에 필요한 파일과 라이브러리 등을 간편하게 패키지화할 있으며, 자유롭게 이동시킬 있다. 이식성도 뛰어나다. 개발과 배포에 대한 장벽이 사라진 만큼 빠른 개발·서비스 환경을 구축할 있다. 패키지에 OS 포함되지 않기에 크기가 작으며, 여러 대의 호스트에 포팅하는 것도 용이하다.

컨테이너를 구현하는 기술에는 여러 가지가 있지만, 가장 대표적인 것이 도커(Docker). 도커는 이미지 생성과 배포·관리에 특화된 기능을 제공한다. 이미지 버전 관리도 제공하며, 중앙 저장소에 이미지를 올리고 받을 수도 있다. 이는 서비스 운영 환경에도 혁신을 가져왔다. 일일이 서버에 사용 환경을 설정하는 대신, 운영 환경을 이미지로 생성해 서버에 배포하는 방식을 활용할 있게 됐기 때문이다. 서비스가 업데이트 됐을 시에도 운영 환경 자체를 변경하지 않고, 이미지를 새로 생성해 배포할 있어 간편하다. 같은 특징으로 인해 도커 컨테이너는 클라우드 환경에서 핵심적인 기능으로 자리 잡게 됐으며, 아마존웹서비스(AWS), 마이크로소프트 애저(MS Azure), 구글 클라우드 플랫폼(GCP), IBM 클라우드 주요 퍼블릭 클라우드 서비스 사업자들도 공식적으로 도커를 지원한다.

 

컨테이너 활용의 단점

컨테이너 기술에도 단점은 존재한다. 호스트 운영체제의 커널을 공유하기 때문에 호스트 운영체제에 실행 환경이 묶이는 것과 생성된 컨테이너 수가 작을 경우 운영자가 관리하기 쉽지만 수가 많아질 경우 운영자가 일일이 컨트롤하기 어렵다는 것이다. 이때 컨테이너 관리·오케스트레이션 도구를 별도로 이용하기도 한다.

도커와 같은 컨테이너 기술은 필요한 애플리케이션과 라이브러리를 컨테이너에 담아 쉽게 이동시키고 어디서든지 간단하게 실행할 있는 도구와 환경을 제공했다. 그러나 기업에서 단순히 하나의 컨테이너만 활용하는 것은 아니며, 엔터프라이즈급의 규모일 경우 여러 대의 호스트에서 수많은 컨테이너들이 이용된다. 엔드 유저에게 서비스가 이뤄지려면 이들이 서로 호출되고 엮이는 과정이 필요하지만, 수가 많으면 많을수록 사람이 이를 관리하는 것은 불가능해진다. 같은 문제를 해결하기 위해 등장한 것이 쿠버네티스(Kubernetes). 쿠버네티스는 구글이 도커 컨테이너를 관리하기 위해 개발했으며, 오픈소스로 공개한 기술이다. 쿠버네티스는 멀티 호스트상의 멀티 컨테이너를 조직화하고 연결하기 위한 스케줄링, 셀프 힐링, 오토 스케일링, 서비스 디스커버리, 로드밸런싱 등의 역할을 자동으로 처리해줌으로써 빠른 애플리케이션 서비스가 이뤄질 있도록 돕는다.

 

 

 

쿠버네티스(Kubernetes) 대해 

쿠버네티스란?

쿠버네티스는 컨테이너화된 워크로드와 서비스를 관리하기 위한 이식성이 있고, 확장가능한 오픈소스 플랫폼이다. 쿠버네티스는 선언적 구성과 자동화를 모두 용이하게 해준다. 쿠버네티스는 크고, 빠르게 성장하는 생태계를 가지고 있다. 쿠버네티스 서비스, 기술 지원 도구는 어디서나 쉽게 이용할 있다.

 

쿠버네티스의 출현과 도입의 필요성

우리는 전통적인 배포 시대와 가상화된 배포 시대를 지나왔다. 가상화는 단일 물리 서버의 CPU에서 여러 가상 시스템 (VM) 실행할 있게 주어 VM간에 애플리케이션을 격리하고 이는 애플리케이션의 정보를 다른 애플리케이션에서 자유롭게 액세스 없는 결과를 낳아 일정 수준의 보안성을 제공할 있었다. VM 가상화된 하드웨어 상에서 자체 운영체제를 포함한 모든 구성 요소를 실행하는 하나의 완전한 머신이라 해도 과언이 아니었다. 

언뜻 없이 보였던 가상화 시대를 거쳐 현재는 그보다 발전된 컨테이너 개발 시대가 도래했다컨테이너는 VM 유사하지만 격리 속성을 완화하여 애플리케이션 간에 운영체제(OS) 공유한다. 그러므로 컨테이너는 가볍다고 여겨진다. VM 마찬가지로 컨테이너에는 자체 파일 시스템, CPU 점유율, 메모리, 프로세스 공간 등이 있다. 기본 인프라와의 종속성을 끊었기 때문에, 클라우드나 OS 배포본에 모두 이식할 있다. 컨테이너는 애플리케이션을 포장하고 실행하는 좋은 방법이다. 프로덕션 환경에서는 애플리케이션을 실행하는 컨테이너를 관리하고 가동 중지 시간이 없는지 확인해야 한다. 예를 들어 컨테이너가 다운되면 다른 컨테이너를 다시 시작해야 한다. 문제를 시스템에 의해 처리한다면 쉽지 않을까? 이것이 쿠버네티스가 필요한 이유이다. 쿠버네티스는 분산 시스템을 탄력적으로 실행하기 위한 프레임 워크를 제공한다. 애플리케이션의 확장과 장애 조치를 처리하고, 배포 패턴 등을 제공한다. 예를 들어, 쿠버네티스는 시스템의 카나리아 배포를 쉽게 관리 있다.

쿠버네티스는 전통적인, 모든 것이 포함된 Platform as a Service(PaaS) 아니다. 쿠버네티스는 하드웨어 수준보다는 컨테이너 수준에서 운영되기 때문에, PaaS 일반적으로 제공하는 배포, 스케일링, 로드 밸런싱과 같은 기능을 제공하며, 사용자가 로깅, 모니터링 알림 솔루션을 통합할 있다. 하지만, 쿠버네티스는 모놀리식(monolithic) 아니어서, 이런 기본 솔루션이 선택적이며 추가나 제거가 용이하다. 쿠버네티스는 개발자 플랫폼을 만드는 구성 요소를 제공하지만, 필요한 경우 사용자의 선택권과 유연성을 지켜준다.

알리바바 클라우드사의 2023 아시아 차세대 클라우드 전략 보고서에 따르면 시장의 84% 내년 클라우드에 대한 20% 이상의 투자 증가 가속화 계획이 있다고 한다. 기업의 운영 효율성을 높여줄 것으로 기대되는 클라우드 네이티브 환경과 그에 주목하는 많은 기업들의 도전, 사용자들의 이슈 향후 귀추가 주목된다.