본문 바로가기

전체 글

(419)
VM(가상머신) 과 Container(컨테이너)의 차이 # VM vs Container # VM 공통적으로 하나의 서버가 있고 한서버에는 어떤 운영 체제가 있건 HostOS (맥 OS, 리눅스, 마이크로소프트 윈도우) 가 올라간다. VM의 경우 호스트OS에 의해 VM을 가상화 시켜주는 하이퍼바이저(virtual box, Xen, KVM, VMware)들이 있다. 하이퍼 바이저를 사용하여 원하는 운영체제로 GuestOS를 올려 여러 VM을 만들 수 있다. GuestOS도 HostOS와 같이 하나의 OS를 독립적으로 가지고 있는것처럼 사용가능하다. 여러 어플리케이션들을 설치하고 각각의 서비스를 만들 수 있다. # 컨테이너 VM과 HostOS 까지 설치는 동일하다. 이 OS에 의해 컨테이너를 가상화 시켜주는 여러가지 소프트웨어들(docker, rkt, LXC)이 ..
쿠버네티스 Kubernetes의 등장 배경 # 쿠버네티스를 왜 사용하는가? 대규모의 서비스를 운영할 때 자원을 최대한 효율적으로 사용해야 비용적으로 유리하기 때문이다. 서버 자원을 효율적으로 사용하기 위해서는 가상화기술을 사용한다. # 쿠버네티스 등장 배경 시스템에 대한 꾸준한 개발을 통해 리눅스는 자원들을 격리해 프로세스들이 독립적인 환경에서 돌아가게 해주는 기술들( 리눅스 자원 격리 기술 : chroot, namespace, cgroup )이 있었지만 사용하기에 어려워 대중적으로 사용되지 않았다. 이 기술과는 별개로 vm 가상화 기술이 기업들은 물론 일반인들에게 까지 쉽게 vm을 가상화 할수있을정도로 발전해있었다. 2010년도에 rackspace 클라우드 기업과 미국 NASA에서 OpenStack 이라는 VM을 가상화 시켜주는 오픈소스가 등장..
API Gateway (API 게이트웨이) # API Gateway 란 ? 최근 서비스는 MSA 형태로 독립적인 기능을 수행하는 작은 단위의 서비스로 나누어 개발하고 있다. 작은 단위의 서비스로 분리함에 따라 서비스의 복잡도를 줄일 수 있으며, 변경에 따른 영향도를 최소화하면서 개발과 배포를 할 수 있다는 장점이 있다. 하지만, 여러 서비스의 엔드포인트를 관리해야 하는 어려움이 있으며 각 서비스의 API에서 공통적으로 필요한 기능을 중복으로 개발해야 하는 문제가 있다. API Gateway를 이용하면 통합적으로 엔드포인트와 REST API를 관리 할 수 있다. API 게이트웨이는 API서버 앞단에서 모든 API 서버들의 엔드포인트를 단일화하여 묶어주고 API에 대한 인증과 인가 기능에서 부터 메세지에 따라서 여러 서버로 라우팅 하는 고급기능 까지..
Service Mesh (서비스 메시) # Service Mesh 란? 하나의 애플리케이션에서 동작하는 모놀리식 아키텍처와 달리 MSA는 나누어진 서비스와 인스턴스 수만큼 관리 대상이 급격히 증가한다. 또한 서비스 간 복잡한 연결 구조 때문에 장애 추적이 어렵고, 장애가 발생한 서비스로 인해 타 서비스를 호출하는 로직이 수행되지 않으면서 다른 서비스까지 동작하지 않는 장애 전파 현상이 나타난다. 서비스 메쉬 아키텍처는 MSA의 트래픽 문제를 보완하는 마이크로서비스 간 커뮤니케이션 인프라이다. 서비스 메쉬를 사용하면 마이크로서비스 간에는 직접 통신을 하지 않고, 모든 통신은 애플리케이션 네트워크 기능을 제공하는 서비스 메쉬를 통해 이루어진다. Micro화된 서비스간의 연결을 위해서 각 서비스에 대한 Configuration을 통합해 관리 하고 ..
API (Application Programming Interface) # API 등장 배경 API는1960년대 서로다른 하드웨어 부품마다 개발자가 하나하나 프로그램을 새롭게 작성하는것 보다 같은 일을 하는 하드웨어를 추상화 시켜 함수를 한번 사용하여 서로다른 화면에 출력하는 일을 쉽게 사용해주기 위해 생겨난 개념이다. 1980년대 "개인용 컴퓨터"의 명칭이 일반화 되기 시작하였고 그래픽 사용자 인터페이스 개념을 크게 보급시키는 데 성공시켜 windowOS나 macOS등 운영체제에서는 각각의 운영체제에서 동작할수있는 애플리케이션을 만들기 위하여 제공되었던 응용프로그램들이 API라는 단어로 사용되기 시작되었다. # API 란? API는 애플리케이션 소프트웨어를 구축하고 통합 하기 위한 정의 및 프로토콜 세트로, 애플리케이션 프로그래밍 인터페이스(Application Progr..
Telemetry (텔레메트리) # Telemetry 마이크로서비스 아키텍처에서 Telemetry는 발생가능한 이슈를 대비하기 위해 반드시 필요한 요소이다. Monitoring, Logging을 포함하여 Alerting 기능과 각 서비스 간 Tracing이 가능한 도구를 제공하여 지속적이고 효과적으로 모니터링하고 이슈에 대응할 수 있도록 해야한다. Telemetry는 기본적으로 컨테이너 환경에서는 Container 내부에 로그를 남기지 않으며 대부분 수십대 많게는 수백대의 컨테이너를 관리 하기 때문에 이에 대한 가시성을 확보 및 로그를 관리 하는 역할을 담당한다. # Telemetry 주요 기능 # Monitoring 모니터링은 인프라 및 응용 프로그램의 성능이나 효율성을 확인하는 작업이다. Monitoring을 위해서는 metric ..
Backing Service (백엔드 서비스) # Backing Service (백엔드 서비스) 백엔드 서비스 (Backing Services)란, 어플리케이션 실행중에 네트워크를 통해 사용할 수 있는 모든 서비스를 말한다. Backing Service는 데이터의 지속성과 일관성 있는 처리를 위해 동작한다. 마이크로서비스의 복잡한 흐름에서 상호간 비동기로 처리되어야 하는 서비스 간에 Backing Service를 구현하여 서비스 결합도를 낮추고 성능을 확보한다. MSA 에서는 백엔드 서비스를 어플리케이션에 붙여진 리소스로 다루게 되고, 서비스간의 통신 부분에 많은 어려움을 겪는다. 이것을 해결하기 위해 마이크로서비스 Backing Services는 메세지큐를 활용한 비동기 통신 패턴을 사용한다. MSA의 특성상 신규 생성, 재생성, 서비스 인스턴스 ..
모놀리식 아키텍처 (Monolithic Architecture) vs 마이크로서비스 아키텍처 (MicroService Architecture) # 모놀리식 아키텍처와 마이크로 서비스 아키텍처 비교 # 모놀리식 아키텍처 (Monolithic Architecture) 전통의 아키텍처를 지칭한다. 소프트웨어의 모든 구성요소가 한 프로젝트에 통합 되어 있는 형태. 모놀리식 아키텍처의 경우 모든 프로세스가 긴밀하게 결합되고 단일 서비스로 실행된다. 따라서 애플리케이션의 한 프로세스에 대한 수요가 급증하면 해당 아키텍처 전체를 확장해야 한다. 코드 베이스가 증가하게 되면 모놀리식 애플리케이션의 기능을 추가하거나 개선하기가 더 복잡해진다. 장점 - 소규모 프로젝트에서는 합리적이다. - 개발, 빌드, 배포, 테스트가 용이하다. 단점 - 어플리케이션 구동시간이 늘어나고 빌드,배포 시간이 길어진다. - 조그마한 수정사항이 있어도 전체를 다시 빌드하고 배포를 해야..