한국소프트웨어산업협회 
AWS SUMMIT SEOUL 행사 안내
더 알아보고 등록하기
Adrian Cockcroft 부사장 기초 연설
행사 개요
2018년 AWS Summit 하이이트 영상
더 알아보고 등록하기
온라인홍보서비스이미지
한국소프트웨어산업협회
본 메일은 발신전용으로 회신되지 않습니다.
메일수신을 원하지 않을 경우 [수신거부]를 클릭하시면 수신거부처리가 이루어집니다.
한국소프트웨어산업협회 대표전화 : 02-2188-6900 | 대표팩스 : 02-2188-6901
Copyright KOSA All Rights Reserved.


Amazon Web Services

AWS 웨비나 시리즈에 참여하세요!
지금 등록하기 »

오는 3월6일 (수)과 7일 (목) 양일에 걸쳐 AWS 에서 준비한 웨비나 시리즈에 여러분을 초대합니다. AWS 클라우드를 아껴주시는 한국 고객 분들을 위해 온라인 세미나를 통해 클라우드의 기본 개념부터 이를 활용하는 심화 테크닉에 이르기까지 다양한 주제로 ‘AWS 웨비나 시리즈’를 제공하고 있습니다.

이번 온라인 세미나를 통해 AWS 클라우드에 대한 새로운 지식을 접하고 업무와 사업에 응용할 수 있는 다양한 아이디어를 발굴하시기 바랍니다.

주요 내용 :

  • AWS와 함께하는 클라우드 컴퓨팅
  • 프리티어 서비스부터 계정 보안까지
  • 클라우드 비용, 어떻게 줄일 수 있을까?
  • 우리 워크로드에 맞는 데이터베이스 찾기
  • Effective AWS Glue
  • 손쉽게 만드는 AWS 기반 한국어 챗봇 빌더 서비스

안내 사항 :

  • 본 세미나는 온라인으로 진행됩니다.
2019년 3월 6일 (수) | AWS 기초 교육 웨비나 
2019년 3월 7일 (목) | AWS 심화 교육 웨비나
*온라인 세미나로 진행됩니다
 

궁금한 점이 있으시면 aws-korea-marketing@amazon.com으로 문의 주십시오..

지금 바로 등록하세요.

감사합니다
아마존 웹서비스 드림

AWS on Twitter | AWS on Facebook | AWS on Linkedin | AWS on Google+ AWS on Twitch AWS Blog AWS TechChat
내 계정 시작하기 | 제품 솔루션 요금 파트너 설명서 교육 이벤트 및 웨비나 | AWS Activate | 새 소식 블로그 | 애널리스트 보고서
이 이메일을 수신해 주셔서 감사합니다. Amazon Web Services에서 보내는 이메일을 더 이상 받지 않길 원하실 경우 여기에서 구독을 취소하실 수 있습니다. 
Amazon Web Services, Inc. 는 Amazon.com, Inc.의 자회사입니다. Amazon.com은 Amazon.com, Inc.의 등록 상표입니다. 이 메시지는 Amazon Web Services Korea LLC(주소: 서울 강남구 논현로 508 GS 타워 12층 135-985) 혹은 자회사가 생성하고 배포했습니다. 이 이메일에 회신하시면 저희에게 연락하실 수 있습니다.
© 2019, Amazon Web Services, Inc. 또는 자회사. All rights reserved. 개인 정보 보호 정책을 확인해 주시기 바랍니다.


 

Facebook  Twitter  YouTube

The Ransomware X.gif


안녕하십니까, 트렌드마이크로입니다.

빠르고 진화하는 위협 환경에는 그만큼 다이나믹하고 유연한 보안 솔루션이 해답입니다. 하지만 개인을 넘어 기업, 공공기관 등 타깃을 가리지 않고 더욱 더 교활한 수법으로 공격을 진행하는 사이버 범죄자들에 비해 우리는 여전히 "나는 아니겠지"란 생각에 빠져있습니다.

트렌드마이크로는 서버 보안의 선두주자로써 고객 여러분을 더 안전하게 보호할 수 있도록 소규모 고객 워크샵, 웨비나 등 다방면의 노력을 통해 최신 위협 정보와 대응 방안 등을 공유하고 있습니다.
즉각적인 Q&A와 전문가와의 만남을 통해 귀사의 환경에 맞춘 최신 보안 컨설팅을 받으실 수 있는 기회를 놓치지 마시기 바랍니다.

2019년 3월 트렌드마이크로 고객 워크샵과 웨비나의 주제는 아래와 같습니다.


고객 여러분의 많은 참여 부탁드립니다.

감사합니다.
트렌드마이크로 드림
 



고객 워크샵
- 차세대 네트워크 침입 방지 시스템 "TippingPoint"
날짜:2019년 3월 8일 (금)
시간:오후 12시 ~ 3시
장소: 
트렌드마이크로 사내 교육장


*고객 워크샵은 고객 우선 참석 워크샵이므로 파트너 분들께서는 제외되실 수 있음을 알려드립니다.
*상기 날짜는 신청 인원에 따라 조정될 수 있음을 알려드립니다.
*워크샵 당일 점심 도시락과 1시간 무료 주차권이 제공됩니다.
등록하기 >>
웨비나
- MS Azure 환경에서의 최적의 보안 적용 방법
날짜:2019년 3월 5일 (화)
시간:오후 3시 ~ 3시 45분
장소: 
온라인 Live


*설문지를 작성해주신 분들 중 추첨을 통해 "블루투스 이어폰"을 드립니다.
블루투스이어폰.jpg
등록하기 >>

트렌드마이크로  |  랜섬웨어 대응센터  |  보안블로그  |  기업고객  |  다운로드센터  |  기술지원
(주)한국트렌드마이크로
서울특별시 강남구 영동대로 416 KT&G타워 3층 (우 06176)
tel. 02-561-0990   fax. 02-561-0660  
Copyright © 2019 Trend Micro Incorporated. All rights reserved.



1. URI (Uniform Resource Indicators : 통합자원 지시자).

* 대부분의 프로토콜은 URL을 참조하지만 SIP에서는 주로 URI (Uniform Resource Indicators)를 참조.

* 이것은 SIP의 이동성 측면에 기인. 즉, 특정 주소 (URI)가 단일 물리적 장치에 묶이지 않고

대신 인터넷에서 이동하고 위치를 변경할 수있는 논리적 엔터티를 의미.

* 그러나 URL과 URI라는 용어는 다른 문맥에서 거의 같은 의미로 사용.

examples :

https://www.iloveyou.com.

sip:love@fwd.love.com

mailto:help@example.com?Subject=hello!


2. URL

(Uniform Resource Locator : 통합자원 식별자)

URL은 실제의 네트웍 경로를 가리키며, 네트웍 상의 리소스 접근시에 사용된다 URL의 첫 번째 부분은 다음과 같은 프로토콜을 명시하는데, 대부분의 경우 http이며, 가끔은 ftp 혹은 mailto이며, 드물게 gopher, news, telnet, file 등을 사용합니다. 이와 같은 URL 프로토콜 부분을 scheme이라고 한다. Scheme 뒤에는 콜론(:)이 따라오며 그 뒤에 식별된 자원의 경로가 나타난다. 다음의 예는 여러 분들이 매우 익숙할 것이다.




http://www.xmlgo.net/document/editor/editor.html


이 URL은 www.xmlgo.net 이라는 이름의 인터넷 상에 있는 서버로부터 /document/editor/editor.html 이라는 파일을 검색하기 위하여 사용될 수 있는 경로(PATH)를 나타낸다. 파일 editor.html 은 /document/editor 이라는 디렉토리에 있으며, HTTP 프로토콜에 의하여 검색되야함을 명시한다. 또 다른 예로써 다음과 같은 전자메일 계정을 가리키는 URL도 있다.


mailto:someone@sungshin.ac.kr

계속해서 다양한 프로토콜에 따른 예를 들어 본다면 ,

  • file -시스템내의 파일 이름 ( file:///C:\windows\xml\test.xml )

  • ftp - ( ftp://ftp.is.co.za/rfc/rfc2141.txt )

  • news - 유즈넷 뉴스 그룹 ( news:comp.xml.xsl )

  • telnet - telnet://www.xmlgo.net

 

물론 URL을 통하여 검색될 수 있는 자원에는 제한이 있다. 컴퓨터로부터 검색가능한 형태의 자원만 검색할 수 있다. 실제의 예를 든다면 , RDF (URI상의,리소스에 관해 기술하는 규칙) : http://www.w3.org/TR/REC-rdf-syntax# SVG (2차원 그래픽,벡터형태의 그래픽, 이미지, 텍스트를 포함,을 표현하는 XML 용어집): http://www.w3c.org/XSL/Format/1.0 등이 네임스페이스로 사용된다.



3. URN

(Uniform Resource Name : 통합자원 명칭)

URN은 자원에 대하여 영속적 (persistent)이고 유일하다. 위치에 독립적인 이름을 제공하기 위하여 존재한다. 이것은 RFC 2141 (http://www.ietf.org/rfc/rfc2141.txt) 에 정의되어 있다.

iURN은 문자열 "urn" 혹은 "URN", NID (Namespace Identifier), 그리고 NSS (Namespace Specific String)로 구성되어 있으며 각 구성 엘리먼트간에 콜론(:)을 위치시킨다. NID는 URN의 형태를 나타내는데, 예를 들어 차후 XMLgo.net에서 ebXML문서의 형태로 각 회사의 정보를 기억해 두는 저장소를 URN으로 가리키고 , NSS 는 유일하고 영속적이여야 하며, 여기서는 registry1이라고 칭하였다.



urn:xmlgo:registry1



좀더 현실적인 예를 들어 본다면

한국인을 위한 URN을 만들기 위하여 한국-시민 이라고 선언할 수 있다. NSS 로는 유일한 번호, 주민등록 번호를 표현하도록 한다면 000000-0000000 이 될 것이다.



urn:한국-시민:000000-0000000

 

4. 이해를 위한 예제

지금까지의 내용을 종합해 보면, Namespace를 지정할 때 URI 로 지정한다. URI로는 현재 널리 사용하는 웹주소, URL 방식과 URN 방식이 포함 되어 있다. 일반적으로 URL을 많이 사용하나 URN도 널리 사용 될 것이다. URL에서는 도메인 주소와 거기에 위치한 물리적인 경로가 자원을 찾기 위한 중요한 정보가 되지만, URN은 자원에 부여된 고유한 이름으로 그 자원의 위치와는 무관하게 부여된 이름이다.


이를 구체적으로 예를 들면 , 인천 광역시 남구 용현동에 인하대학교가 있지만, 인하대학교는 새로운 부지로 이사를 갈 수도 있을 것이다. 인하대학교가 어디에 있는지는 URL(주소)로 표현 할 수 있지만, 인하대학교가 다른 곳으로 가더라도 URN을 가지고 그 리소스(인하대학교)을 식별할 수 있다. 이사를 가고 나서 ‘인천광역시 남구 용현동의 인하대학교’ 라는 기존의 주소를 가지고는 인하대학교를 찾을 수 없다. 하지만 인하대학교란 고유한 이름은 변함이 없을 것이다


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

토폴로지(topology)  (0) 2019.11.12
P2P((peer to peer))  (0) 2019.11.08
REST(Representational State Transfer - 작업 중  (0) 2019.02.22
VM vs container  (0) 2019.02.22
컨테이너(Container)?-정리 필요  (0) 2019.02.20

REST(Representational State Transfer)는 월드 와이드 웹과 같은 분산 하이퍼미디어 시스템을 위한 소프트웨어 아키텍처의 한 형식이다. 이 용어는 로이 필딩(Roy Fielding)의 2000년 박사학위 논문에서 소개되었다. 이 개념은 네트워킹 문화에 널리 퍼졌다.


엄격한 의미로 REST는 네트워크 아키텍처 원리의 모음이다. 여기서 '네트워크 아키텍처 원리'란 자원을 정의하고 자원에 대한 주소를 지정하는 방법 전반을 일컫는다. 간단한 의미로는, 웹 상의 자료를 HTTP위에서 SOAP이나 쿠키를 통한 세션 트랙킹 같은 별도의 전송 계층 없이 전송하기 위한 아주 간단한 인터페이스를 말한다. 이 두 가지의 의미는 겹치는 부분과 충돌되는 부분이 있다. 필딩의 REST 아키텍처 형식을 따르면 HTTP나 WWW이 아닌 아주 커다란 소프트웨어 시스템을 설계하는 것도 가능하다. 또한, 리모트 프로시저 콜 대신에 간단한 XML과 HTTP 인터페이스를 이용해 설계하는 것도 가능하다.



JSON 혹은 XML를 통해 데이터를 주고 받는 것이 일반적이다.

월드 와이드 웹(www)과 같은 분산 하이퍼미디어 시스템을 위한 소프트웨어 개발 아키텍처의 한 형식

REST는 기본적으로 웹의 기존 기술과 HTTP 프로토콜을 그대로 활용하기 때문에 웹의 장점을 최대한 활용할 수 있는 아키텍처 스타일이다.

REST는 네트워크 상에서 Client와 Server 사이의 통신 방식 중 하나이다.



HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)을 명시하고, HTTP Method(POST, GET, PUT, DELETE)를 통해 해당 자원에 대한 CRUD Operation을 적용하는 것을 의미한다.

즉, REST는 자원 기반의 구조(ROA, Resource Oriented Architecture) 설계의 중심에 Resource가 있고 HTTP Method를 통해 Resource를 처리하도록 설계된 아키텍쳐를 의미한다.

웹 사이트의 이미지, 텍스트, DB 내용 등의 모든 자원에 고유한 ID인 HTTP URI를 부여한다.

CRUD Operation

Create : 생성(POST)

Read : 조회(GET)

Update : 수정(PUT)

Delete : 삭제(DELETE)

HEAD: header 정보 조회(HEAD)






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

P2P((peer to peer))  (0) 2019.11.08
URI, URL 그리고 URN 이란?  (0) 2019.02.25
VM vs container  (0) 2019.02.22
컨테이너(Container)?-정리 필요  (0) 2019.02.20
이클립스(Eclipse)  (0) 2019.02.19

[Web] 아파치 톰캣 설치

https://coding-factory.tistory.com/4


이클립스 연동하기

https://m.blog.naver.com/PostView.nhn?blogId=feel940&logNo=221222718901&proxyReferer=https%3A%2F%2Fwww.google.com%2F


프레임워크 등


https://ithub.tistory.com/219?category=626175


https://jeong-pro.tistory.com/57?category=790237

Container(컨테이너)를 이해하기 위해서는 Virtual Machine(가상머신, VM) 개념을 알고 있는것이 좋을 것 같다. 


컨테이너 개념 및 도입된 이유를 알기 위해서는 VM에 대한 특징부터 살펴보는 것이 좋을 것 같다. 

1. 개념 구성도


개념 구성도부터 살펴보도록 하겠다.



 

 

 VM 개념도

Container 개념도 




출처 : https://www.docker.com/what-docker


Virtual Machine 은 구성도는 다음과 같다. 



하드웨어 가상화

소프트웨어로 구현된 하드웨어

소프트웨어로 구현된 하드웨어 그 위에 OS를 설치하고, 그 위에 소프트웨어를 설치함으로써 무겁고 느린 단점

위 단점으로 반가상화 기술방식의 Xen이 등장하였지만, 성능문제는 해결되지 못함

예 : VMWare, VirtualBox 등



Container:

리눅스에서 하드웨어 가상화와 OS설치를 하지 않고 단순히 프로세스를 단독으로 격리시키는 기술 컨테이너라는 기술이 등장

하드웨어 및 OS 계층을 두지 않고 프로세스만 격리하므로 실제 그냥 앱을 실행하는 경우와 거의 차이가 보이지 않을 정도로 Virtual Machine 에 비해 성능문제가 해결됨

리눅스 OS에서 지원하는 기술로 LXC(Linux Container)라는 시스템 레벨의 컨테이너 기술을 제공

초기 Docker는 LXC 기술을 채용했으나, 0.9버전 이후에는 libcontainer라는 자체 컨테이너 사용

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

IDE 개발 과정


IBM은 1984년 이클립스의 전신이라 할 수 있는 IDE ‘비주얼에이지(VisualAge)’를 이미 개발했다. 

비주얼에이지는 IBM 내에서 객체 지향 언어를 사용하던 개발자들에게 특히 인기를 끌었다. 


개발자들은 비주얼에이지로 콘솔창에 소스코드를 입력하지 않고, 그래픽 유저 인터페이스(GUI)를 활용해 보다 쉽게 프로그래밍을 진행할 수 있었다.


 

‘비주얼에이지’ 실행 화면 <출처: IBM>


1990년대 중반에 이르며 IDE는 많은 개발자들에게 꼭 필요한 기술이 됐다. 

당시엔 마이크로소프트(MS)의 IDE인 ‘비주얼 스튜디오(Visual Studio)’가 개발자들 사이에서 폭넓게 활용됐다. 


이 와중에 자바 개발자들은 비주얼 스튜디오보다 자바 언어에 특화된 IDE를 찾았는데, 

- 시만텍 ‘비주얼 카페’, 볼랜드 ‘J빌더’, IBM 비주얼에이지가 주로 사용됐다. 


같은 시기 IDE 뿐만 아니라 애플리케이션 서버 기술이 성장했고, 동시에 자바 개발에 대한 수요도 높아졌다.


<출처 : 네이버 지식 카페>

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

+ Recent posts