IT 관련된 업무에 관련된 사람이라면 컨테이너에 대한 애기를 한번쯤은 들어봤을 것이다. 

하지만, VM이란 용어는 흔하게 많이 접해봤을 것이다. 
좀 더 깊숙하게 들여다보면 VM과 컨테이너를 비교한 자료들이 많이 있을 것이다.

이제 IT 흐름은 컨테이너 기반의 환경이 구성되어 있다. 

컨테이너 개념을 알고가 하기 전에 컨테이너가 진정으로 의미하는 바는 무엇이며 어떻게 작동하고 왜 중요한 것일까에 대한 생각부터 해야 할 필요가 있다. 

그럼 먼저, 컨테이너를 알기 위해서는 VM 개념을 알아야 한다.

그리고 VM 개념을 알기 위해서는 OS와 Kernel 개념을 알아야 한다.


따라서, OS와 커널에 대한 개념부터 짚고 넘어가도록 하겠다.

1. OS and Kernel

대부분의 컴퓨터 및 전자 장치들은 CPU, 보조(장기) 기억 장치(디스크 드라이브, SSD), 메모리, 네트워크 카드 등과 같은 하드웨어를 기반으로 만들어져 있다.

컴퓨터 내에서 어떤 정보를 공유하기 위해서는 이러한 하드웨어간 상호작용을 해야 한다. 이러한 상호 작용을 하기 위해서는 운영체제(OS) 안에 있는 커널(kernel)이라는 것이 하드웨어간 상호 작용을 할 수 있는 다리 역할을 수행한다. 뿐만 아니라, 커널은 실행될 프로세스(프로그램)의 스케쥴링을 담당하며, 장치들을 관리(디스크나 메모리의 특정 주소를 읽거나 쓰고)하는 등 많은 일들을 수행한다. 


컴퓨터 내부의 모습>


2. 가상 머신이란.

IT 개발자 및 운영자들은 현재의 사용하고 있는 컴퓨터에서 더 많은 일들을 하고 싶어한다. 
이유는 크게 2가지로 생각해 볼 수 있다. 
지금 사용하고 있는 컴퓨터에게 명령을 내렸는데, CPU 및 여러 하드웨어들은 명령을 모두 마친 후 쉬고 있는데, 업무를 수행하고 있는 프로세스가 계속해서 일하고 있기 때문이다. 즉, 소프트웨어가 하드웨어를 따라가지 못하고 있는 상황이다. 따라서, CPU를 비롯한 다양한 하드웨어들이 쉬지 말고 계속해서 일하도록 하기 위해 하나의 컴퓨터에 여러 개의 컴퓨터를 구성해서 CPU 및 하드웨어를 여러개로 나누어서 쉬지 못하고 계속해서 일하도록 하기 위해서이다. 

또 하나는, IT 환경이 변화하고 있는 상황에서 IT 개발자 및 운영자들은 다양한 환경에서 업무를 수행해야 하는 상황이 되고 있다. 그런데, 여러개의 컴퓨터를 마련하기에는 많은 비용이 소비될 뿐만 아니라, 여러대의 컴퓨터를 가지고 이동하는 것도 어려운 현실이다. 따라서, 한대의 컴퓨터에 여러 개의 컴퓨터를 만들수 있기를 희망하고 있다. 이러한 요구사항을 만족하기 위해서 여러 개의 가상화 환경을 만들고 각각의 가상화 환경에 CPU 등 하드웨어를 여러 개로 나누어서 사용할 수 있도록 한다. 이것이 가상 머신의 개념이다. 


2.2 가상 머신 구성
그럼 한 대의 컴퓨터에 여러 대의 컴퓨터를 만들기 위해서는 가상 머신 환경을 구성해야 한다. 

가상머신도 하나의 컴퓨터를 구성하기 위한 환경이다. 
따라서, 가상머신에도 컴퓨터를 운영할 수 있는 기본 운영체제가 있어야 한다. 일반적으로 이것을 게스트 운영체제라고 한다. 실질적으로 운영되는 메인 OS는 호스트 운영체제라고 한다.

그렇다면 게스트 운영체제를 만들어야 하고, CPU 및 하드웨어들도 몇 개로 분할해야 하는데, 이러한 작업을 수행하도록 돕는 것이 하이퍼바이저(hypervisor)라고 하는 것이 수행한다. 





하이퍼바이저는 호스트 OS 위에서 동작하거나, bare metal 방식처럼 머신 하드웨어 위에서 직접적으로 동작하는 (기존 OS를 대체하는) 것입니다 . 어떤 방식이든, 하이퍼바이저를 사용한 접근법은 다수의 파트에 대한 가상화를 필요로 하기 때문에 무겁다고 여겨진다.

같은 머신에 다수의 독립적인 그룹을 구성할 필요성이 있을 때, 각각의 그룹에 대해 가상머신을 작동시키는 것은 좋은 접근법이라기엔 너무 무겁고 리소스를 낭비하게 된다.


추후에 말하겠지만, 컨테이너 방식과 비교해 볼때 
가상머신은 머신 수준의 분리를 위해 하드웨어 가상화가 필요한 반면 컨테이너는 동일한 운영체제 내의 독립된 공간에서 실행된다. 독립된 공간의 수가 증가할 수록 오버헤드의 차이가 더 명확해진다. 
예를 들면, 노트북으로 수십개의 컨테이너를 실행시킬 수 있는 반면에 
가상머신의 경우는 단 하나의 가상머신도 버거울 수 있다.


3. 발전 동향

2006년, 구글의 엔지니어들은 Linux “control groups”라는 것을 발명하였고 이를 줄여 cgroups이라 하는데, cgroups는 유저 프로세스의 리소스 사용을 분리하여 관리하는 Linux 커널의 기능을 애기한다. 

리소스 관리를 위해 프로세스의 집합인 네임스페이스(namespace)에 집어 넣을 수 있는데, 하나의 컴퓨터는 다수의 네임스페이스를 가질 수 있고, 각각은 커널에 의해 제한을 갖게 된다. 

즉, 네임스페이스 별로 CPU, RAM 등의 리소스 양을 할당받는 되는데, 이러한 이유는 프로세스가 서버를 점유하지 못하도록 제한을 두기 위한 것이다. 

Linux의 cgroups 이라는 커널 기능에서의 네임스페이스 분리 자체는 프로세스 분리(process isolation) 개념을 가지고 공유 메모리와 같은 일들을 방지한다. 

또한, 프로세스들이 독립적일수 있도록 보장해주는 기능을 가진다.

이러한 개념에서 보여지듯이 네임스페이스 내부의 프로세스는 각각의 고유한 머신으로 보여질 수 있으며, 컨테이너의 시발점이 된다고 볼 수 있다. 

Linux cgroups는 LXC (linux container)라는 기술의 기반이 되었다고 한다. 

LXC는 오늘날 컨테이너라고 불리는 것의 가장 첫 번째 구현이라고 할 수 있다.  

따라서, 여러가지로 혼합해 보면, 리눅스 기반의 cgroups와 네임스페이스 분리 기능을 사용하여 별개의 프로세스와 네트워킹 스페이스를 가진 가상 환경을 만들어내게 되었고,

이러한 기술 기반의 LXC는 독립적이고 격리된 유저 스페이스를 어느 정도 가능하게 했다.

LXC 기본 개념이 컨테이너가 되엇으며, 초기의 Docker는 LXC을 기반으로 하여 만들어졌다.

따라서, Docker는 가장 널리 사용되는 컨테이너 기술이고, 

사람들이 컨테이너라고 하면 대부분 Docker를 가르키는 이유이기도 하다.


Docker

Docker는 가장 널리 사용되는 컨테이너 기술이고, 사람들이 컨테이너라고 하면 대부분 Docker를 가르킨다. 그 이유는 Docker는 여전히 cgroups와 Linux 커널, 최근 Windows에서 제공되는 네임스페이스 기술을 기반으로 하고 있으며, Docker는 컨테이너화(containerization)의 산업 표준이 되었기 때문이기도 하다. 물론 다른 오픈소스 컨테이너 기술들(CoreOS의 rkt 등)과 직접 컨테이너 엔진을 만드는 거대 기업들(Google의 lmctfy 등)도 존재한다. 

Docker 컨테이너는 여러 image(이미지, 하나의 패키지로 묶인 바이너리)들의 레이어로 이루어져 있다. base image는 컨테이너의 운영체제를 포함하고 있고, 이 OS는 호스트의 OS와 다를 수 있다.


이 base image 위에 각각의 컨테이너 부분이 되는 다수의 이미지들이 올라가는데, 예를 들어, apt-get 의존성을 포함하는 이미지가 base image 위에 올라갈 수 있게 된다. 그 위에는 어플리케이션 바이너리 등을 포함하는 이미지가 올라갈 수 있다.

예를 들면, 두 컨테이너가 각각 레이어 a, b, c와 레이어 a, b, d로 되어 있다면 각 레이어 a, b, c, d의 하나의 복사본만을 local과 repository에 보관하면 된다. 이것이 바로 Docker의 유니온 파일 시스템(union file system)이다. 

해시로 식별되는 각 이미지는 컨테이너를 구성하는 많은 가용 레이어 이미지들 중 하나입니다. 하지만 컨테이어너는 최상위 이미지로 식별되며, 부모 이미지에 대한 참조를 가집니다. 위 그림에서 두 최상위 이미지(image 1과 image 2)는 첫 3개의 레이어를 공유하고 있습니다. image 2는 구성과 관련된 2개의 레이어를 부가 적으로 가지지만, image 1과 같은 부모 이미지를 공유하고 있습니다.

컨테이너가 부팅되면, 해당 이미지와 부모 이미지들이 저장소로부터 다운로드되고, cgorup과 네임스페이스가 만들어지며, 이미지를 사용하여 가상 환경을 생성한다. 컨테이너 내에서는, 이미지에 명시된 파일과 바이너리들은 전체 머신에서의 유일한 파일들로 나타내어 진다. 이후 컨테이너의 메인 프로세스가 실행되고 컨테이너는 alive 상태가 된다.


Docker는 copy on write, volume(컨테이너 사이에서 공유되는 파일 시스템), docker daemon(머신의 컨테이너들을 관리), 버전 관리 저장소(컨테이너를 위한 Github) 등의 기능들을 가지고 있다. 

Docker를 사용하는 실용적인 예제 관련 내용이다.

①②클라이언트는 도커 데몬이라고 불리는 프로세스에 무엇을 해야할지 알려주고, 

③이 데몬은 registry 또는 repository로부터 이미지를 가져오고

④ 이러한 이미지들은 로컬 머신에 캐시되고

⑤ 데몬에 의해서 부팅되어 컨테이너를 실행합니다


Why Containers

프로세스 분리 이외에, 컨테이너는 다른 많은 이점이 있다.

컨테이너는 스스로 독립된 유닛으로서 해당 컨테이너를 지원하는 어느 곳에서든 실행될 수 있다. 즉, 호스트 OS가 CentOS이던 Ubuntu이던 MacOS이건 심지어 Windows와 같은 UNIX 기반 OS인지 상관없으며, 컨테이너가 지정한 OS가 된다. 

또한 컨테이너는 표준화된 작업 또는 연산의 유닛 역할을 하는데, 

각 컨테이너가 하나의 웹서버, 하나의 데이터베이스 등으로 구성하게 할 수 있는데, 이렇게 하는 경우, 어플리케이션의 규모를 키우기(scale) 위해서는, 단순히 컨테이너의 수를 늘리기만 하면 된다. 

즉, 각 컨테이너에게는 일정한 리소스 설정(CPU, RAM, 스레드의 수 등)이 주어지고, 어플리케이션의 규모를 증가시키기 위해서는 개별적인 컨테이너의 리소스 설정을 변경하는 대신 단지 컨테이너의 수를 증가시키면 된다. 이는 엔지니어가 어플리케이션의 규모를 증가시키거나 축소시켜야 할 때, 훨씬 쉽게 기능을 제공하는 것과 같다.

이러한 조합법에 기반하여 컨테이너들을 마이크로 서비스 아키텍처를 구현하기 위한 훌륭한 도구로 사용할 수 있게 되는데, 예를 들어 Redis 마이크로 서비스는 하나의 마스터 컨테이너와 다수의 슬레이브 컨테이너를 사용하여 구현할 수 있다.

이러한 (마이크로) 서비스 지향적 아키텍처는 엔지니어링 팀이 어플리케이션을 개발하고 배포하는 것을 쉽게 해주는 많은 중요한 성질들을 가지고 있다.


Orchestration

Linux 컨테이너의 사용자들은 각 컨테이너에서 프로세스가 실행되는 여러 개의 가상 머신에 걸쳐 규모가 큰 어플리케이션을 배포하고자 하는 경우, 

이를 위해서 수만개의 컨테이너를 수백개의 가상 머신에 걸쳐 효과적으로 배포할 수 있어야 했고, 이 사이의 네트워킹, 파일 시스템, 리소스 등을 효과적으로 관리할 수 있어야 했다. 

오늘날의 Docker는 컨테이너 네트워킹, volume을 위한 파일 시스템, 리소스 설정 등을 정의하는 추상화를 통해서 이를 더욱 쉽게 할 수 있도록 하였다.

하지만 다음과 같은 것들을 위해 Docker 이외의 툴이 여전히 필요하다.

  • 실제로 명세(specification)을 받아들이고 컨테이너를 머신에 할당 (스케쥴링)
  • 실제로 docker를 통해 지정된 컨테이너를 해당 머신에서 실행
  • 업그레이드, 롤백, 끊임없이 변경되는 시스템의 성질에 대한 처리
  • 컨테이너 크래시와 같은 고장에 대한 대응
  • 서비스 디스커버리, VM 간 네트워킹, 클러스터에 대한 추가(ingress), 제거(egress) 등의 클러스터 리소스 생성

이들은 (일시적일 수도 있고 또는 끊임없이 변화할 수도 있는) 컨테이너들의 집합 위에 만들어진 분산 시스템의 오케스트레이션(orchestration)과 관련이 있는 문제들이고, 사람들은 이 문제들을 해결하기 위해서 정말 대단한 시스템을 구축

출처 : https://goofcode.github.io/container-101


'정보관리기술사 도전 > 용어 정의' 카테고리의 다른 글

REST(Representational State Transfer - 작업 중  (0) 2019.02.22
VM vs container  (0) 2019.02.22
이클립스(Eclipse)  (0) 2019.02.19
Maven-> working  (0) 2019.02.19
스위프트(Swift)  (0) 2019.02.15

IBM 주도 자바 기반의 오픈 소스 프로젝트로 IDE(통합개발환경)의 대표적인 자바 개발 프로그램이다


프로그래밍을 하려면 코드를 작성하고, 저장하고 컴파일 및 디버깅을 도와주는 통합 개발 환경(Integrated Development Enviornment, IDE)이 필요하다. 현재 다양한 IDE가 존재하지만 자바 개발자에게 가장 사랑받는 IDE로 ‘이클립스’를 빼놓을 수 없다.


이클립스 구조. 



자바 가상머신(VM)과 이클립스 플랫폼, JDT와 플러그인으로 구성돼 있다. 

 <출처: SlideShare - Australian Nuclear Science and Technology Organisation>



 이클립스는 기본적으로 자바 개발에 최적화된 기술을 제공한다. 큰 구조는 자바 가상머신(VM) 위에 이클립스 플랫폼이 있고, 그 위에 자바 개발도구(Java Development Tools, JDT)를 제공하고 플러그인을 붙이는 형식이다. 이클립스 플랫폼은 표준 위젯 툴킷(Standard Widget Toolkit, SWT)이라는 GUI 위젯 툴킷, 코드 작성, 빌드, 리팩토링을 할 수 있는 워크벤치(Workbench) 등으로 구성된다.


이클립스는 자바를 넘어 다양한 영역으로 확장되고 있다. 

구글이 ‘이클립스 ADT (Android Development Tools)’라는 플러그인을 지원하며 이클립스는 안드로이드 개발자에게도 인기를 끌었다. 


 이클립스의 가장 최신 버전은 ‘네온(Neon)’이다. 

네온은 PHP, 자바스크립트, 도커, 사물인터넷(IoT) 등을 위한 기술을 지원해 웹, 인프라 등 다양한 산업 분야에 쓰일 수 있다. 


클라우드 IDE ‘체(Che)’는 따로 프로그램을 설치하지 않고 웹브라우저에서 바로 이클립스를 이용할 수 있는 서비스다.





'정보관리기술사 도전 > 용어 정의' 카테고리의 다른 글

VM vs container  (0) 2019.02.22
컨테이너(Container)?-정리 필요  (0) 2019.02.20
Maven-> working  (0) 2019.02.19
스위프트(Swift)  (0) 2019.02.15
자바스크립트( JAVA script)  (0) 2019.02.15

아파치 메이븐(Apache Maven)은 자바용 프로젝트 관리 도구이다. 아파치 앤트의 대안으로 만들어졌다. 아파치 라이선스로 배포되는 오픈 소스 소프트웨어이다. 

'정보관리기술사 도전 > 용어 정의' 카테고리의 다른 글

컨테이너(Container)?-정리 필요  (0) 2019.02.20
이클립스(Eclipse)  (0) 2019.02.19
스위프트(Swift)  (0) 2019.02.15
자바스크립트( JAVA script)  (0) 2019.02.15
정리 필요  (0) 2019.02.14

스위프트는 iOS OS X 운영체제에 최적화된 프로그래밍 언어다. 

과거 iOS OS X 앱을 개발하기 위해선 ‘오브젝티브 C’라는 언어를 이용해야 했다. 기존 C언어에 ‘오브젝티브(Objective, 객체지향)’의 성격을 섞은 언어였다.


오브젝티브 C는 iOS OS X 개발자의 주류 언어로 자리잡았다.

스위프트는 오브젝티브 C에서 C언어의 특성을 줄이고 객체지향 언어의 성격을 강화한 언어다. 

애플이 2014년 내놓은 신규 프로그래밍 언어로 기존 언어를 대체하며 빠르게 사용이 증가하고 있다. 
스위프트는 모바일 운용체계(OS) iOS와 컴퓨터용 OS OS X 개발용으로 사용할 수 있는 새 프로그래밍 언어이다. 
함수형과 객체형 언어 중간 격으로 스크립트 언어이기 때문에 컴파일이 필요 없다. 



'정보관리기술사 도전 > 용어 정의' 카테고리의 다른 글

이클립스(Eclipse)  (0) 2019.02.19
Maven-> working  (0) 2019.02.19
자바스크립트( JAVA script)  (0) 2019.02.15
정리 필요  (0) 2019.02.14
프레임워크에 대한 이해  (0) 2019.02.14

자바스크립트는 1995년 미국의 넷스케이프 커뮤니케이션즈(Netscape Communications)에서 처음 개발되었다. 자바스크립트 표준은 1996년 11월부터 유럽 컴퓨터 제조업자 협회(ECMA: European Computer ManufacturersAssociation) 기술위원회 39(TC-39)에서 에크마스크립트(ECMAScript, ECMA-262)라는 이름으로 개발되었다. 최신 표준은 2017년 6월에 제정된 ECMAScript 2017이며, 2015년부터 1년에 한 번씩 새로운 버전의 ECMAScript를 공개하고 있다.


HTML 문서의 정적이고 단조로운 한계를 극복하기 위해 넷스케이프(Netscape)사가 만든 livescript가 그 이름을 달리 한 것으로서 브라우저 자체에 내장된 해석기능을 이용한 클라이언트(client) 기반의 일종의 스크립트 언어이다. 작고도 빠르기 때문에 웹문서를 동적으로 꾸밀 때 가장 널리 쓰인다.


즉, 웹 페이지에서 사용자로부터 특정 이벤트나 입력 값을 받아 동적인 처리를 목적으로 고안된 객체 기반의 스크립트 프로그래밍 언어이다. 


'정보관리기술사 도전 > 용어 정의' 카테고리의 다른 글

Maven-> working  (0) 2019.02.19
스위프트(Swift)  (0) 2019.02.15
정리 필요  (0) 2019.02.14
프레임워크에 대한 이해  (0) 2019.02.14
푸쉬(Push) Service  (0) 2018.11.30

node.js 기반에 react.js 를 사용하며 워드프레스 REST API(WP API) 로 구동된다.


필요한 DOM 조작 수


TypeScript를 사용하면 Java와 C#을 다루던 사용자에게 생산성을 올려주고 정적 타입 체크 등의 많은 이익이 있습니다. 그러나 모든 사람들이 TypeScript를 사용하려고 하지는 않습니다.

많은 소규모 사례에서 TypeScript를 사용하면 생산성 향상보다 더 많은 오버헤드가 발생할 수 있습니다. 이 경우 TypeScript 없이 Angular를 사용하는 것이 어려울 수 있기 때문에 Vue를 사용하는 것이 좋습니다.




'정보관리기술사 도전 > 용어 정의' 카테고리의 다른 글

스위프트(Swift)  (0) 2019.02.15
자바스크립트( JAVA script)  (0) 2019.02.15
프레임워크에 대한 이해  (0) 2019.02.14
푸쉬(Push) Service  (0) 2018.11.30
데몬(Daemon)서비스  (0) 2018.11.30

프레임워크에 대한 이해


* 프레임워크 : 작업 속도와 작업 방식을 쉽게 만들어주는 공구 상자와 같은 거라고 생각하면 된다. 

즉, 작업 환경에 따라 어떤 공구 상자를 두느냐가 중요하겠다. 


예를 들면, 나무집을 지을때와 쇠로 지은 집을 지을때에는 공구 상자가 달라져야 할 것이다.

그리고 나무집이라 하더라도 강아지 집을 지을 때와 사람이 살 집을 지을 때에도 공구 상자가 달라져야 할 것이다.


따라서, 작업 환경에 적합한 공구 상자가 선택되어져야 할 것이다. 


그렇다면, 공구 상자에 어떠한 것들이 들어 있는지도 중요할 것이다.

망치가 있을 것이고, 톱이 있을 것이고, 드라이버가 있을 것이고..

그런데 모든 공구 상자에 톱이 있는 것도 잇을 것이고 없는 것도 있을 것이다.


즉, 공구 상자에 어떤 것들이 있는지에 따라 작업 속도도 달라질 것이고, 작업 속도도 많이 올려주게 된다. 


개발 분야로 접근하게 되면 코드를 작성하는데 쓸데없이 여러번 반복작업해야할 내용도 줄여준다. 


게다가 HTML, CSS, 자체 로직 등을 명확히 구분해서, 개발하는 사람이 편리하도록 최대한 노력해놓은 결과물이다. 

'정보관리기술사 도전 > 용어 정의' 카테고리의 다른 글

자바스크립트( JAVA script)  (0) 2019.02.15
정리 필요  (0) 2019.02.14
푸쉬(Push) Service  (0) 2018.11.30
데몬(Daemon)서비스  (0) 2018.11.30
Jenkins [제킨스]  (0) 2018.11.28


어떤 조건이 만족되었을 때에 지정된 서비스를 제공하는 것


- 특정 위치 기반 이벤트가 발생하였을 때 자동으로 서비스를 제공받는 것.

  즉, 푸시 서비스는 위치 기반 트리거링(Location Triggering) 서비스라 하기도 함(네이버 지식백과)

'정보관리기술사 도전 > 용어 정의' 카테고리의 다른 글

정리 필요  (0) 2019.02.14
프레임워크에 대한 이해  (0) 2019.02.14
데몬(Daemon)서비스  (0) 2018.11.30
Jenkins [제킨스]  (0) 2018.11.28
빌드란? 그리고 Jenkins(젠킨스)란? 써야 하는 이유  (0) 2018.11.28

- 시스템에 관련된 작업을 수행하는 Background process를 통칭하는 용어

- 부팅 단계부터 지정된 데몬이 동작하며, 서비스의 요청이 없을 때는 유휴 상태를 유지함

예약된 시간이나 이벤트의 요청이 발생했을 때 지정된 서비스가 실행

즉,  처리해야 할 작업 조건이 발생하면 자동으로 작동하여 필요한 작업을 실행



'정보관리기술사 도전 > 용어 정의' 카테고리의 다른 글

프레임워크에 대한 이해  (0) 2019.02.14
푸쉬(Push) Service  (0) 2018.11.30
Jenkins [제킨스]  (0) 2018.11.28
빌드란? 그리고 Jenkins(젠킨스)란? 써야 하는 이유  (0) 2018.11.28
ZooKeeper  (0) 2018.11.21

Jenkins는 Java로 제작된 오픈 소스 CI(Continuous Integration) 서비스를 제공하는 도구이다. 



GIT 개념 : 다수의 개발자들이 하나의 프로그램을 개발할 때 버전 충돌을 방지하기 위해 각자 작업한 내용을 공유 영역에 있는 저장소에 빈번히 업로드함으로써 지속적 통합이 가능하도록 해 준다


본래 Hudson이라는 이름의 소프트웨어였으나 오라클과의 상표권 분쟁으로 인하여 

Jenkins라는 이름으로 바꾸었다.


Apache Tomcat 같은 Servlet Container 위에 돌아가는 서버 기반 시스템이다. 


AccuRev, CVS, Subversion, Git, Mercurial, Perforce, Clearcase, RTC와 같은 SCM 툴을 지원한다. 


또한 SonarQube 등의 코드 품질관리 플랫폼과 셸 스크립트, 윈도우 배치 프로그래밍, Ant/Maven/Gradle 기반 프로그램도 지원한다. 



'정보관리기술사 도전 > 용어 정의' 카테고리의 다른 글

푸쉬(Push) Service  (0) 2018.11.30
데몬(Daemon)서비스  (0) 2018.11.30
빌드란? 그리고 Jenkins(젠킨스)란? 써야 하는 이유  (0) 2018.11.28
ZooKeeper  (0) 2018.11.21
Redis cluster  (2) 2018.11.20

+ Recent posts