본문 바로가기

IT 용어정리

(14)
GitLab 깃랩 # GitLab 이란? 깃랩은 어떤 툴보다 광범위합니다. 한두 개의 툴을 대체하는 것이 아니라 15개의 데브옵스 라이프사이클 툴을 모두 대체합니다. 깃랩(GitLab)은 깃랩 사(GitLab Inc.)가 개발한 깃 저장소 및 CI/CD, 이슈 추적, 보안성 테스트 등의 기능을 갖춘 웹 기반의 데브옵스 플랫폼으로써, 오픈 소스 라이선스 및 사유 소프트웨어 라이선스를 사용한다. 2019년 현재, 깃 저장소와 이슈 추적 기능을 갖춘 유일한 단일 어플리케이션의 (Single Application) 데브옵스 솔루션이다. 시중에 유통되고 있는 많은 데브옵스 솔루션들은 자신들의 특화된 영역 이외는 API를 이용한 연동 만을 제공하지만 깃랩은 단일 어플리케이션으로써 데브옵스의 전 영역의 기능들을 모두 제공하고 있어 소..
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) 전통의 아키텍처를 지칭한다. 소프트웨어의 모든 구성요소가 한 프로젝트에 통합 되어 있는 형태. 모놀리식 아키텍처의 경우 모든 프로세스가 긴밀하게 결합되고 단일 서비스로 실행된다. 따라서 애플리케이션의 한 프로세스에 대한 수요가 급증하면 해당 아키텍처 전체를 확장해야 한다. 코드 베이스가 증가하게 되면 모놀리식 애플리케이션의 기능을 추가하거나 개선하기가 더 복잡해진다. 장점 - 소규모 프로젝트에서는 합리적이다. - 개발, 빌드, 배포, 테스트가 용이하다. 단점 - 어플리케이션 구동시간이 늘어나고 빌드,배포 시간이 길어진다. - 조그마한 수정사항이 있어도 전체를 다시 빌드하고 배포를 해야..
CI / CD ( 지속적 통합 / 지속적 제공 ) CI : Continuous Integration CD : Continuous Delivery CI/CD는 애플리케이션 개발 단계를 자동화하여 애플리케이션을 보다 짧은 주기로 제공한다. 소스 코드로부터 설치, 실행할 수 있는 제품을 생성하여 배포하는 과정. # CI ( 지속적 통합 ) 란? 개발자를 위한 자동화 프로세스인 지속적인 통합. 애플리케이션에 대한 새로운 코드 변경사항이 정기적으로 빌드 및 테스트되어 공유 리포지토리에 통합되어 여러명의 개발자가 동시에 애플리케이션 개발과 관련된 코드 작업을 할 경우 서로 충돌할 수 있는 문제를 해결할 수 있다. 소프트웨어 개발에서 각 소프트웨어 개발자가 작업한 변경점을 프로젝트의 원래 소스 코드에 자주, 빠르게 통합하는 것이다. 이를 위해 CI를 위한 각종 개발..