-
개발자도 궁금한 IT 인프라, 정송화/김영선/전성민공부 기록/IT 기술 2019. 10. 11. 23:22728x90
- 개발자도 궁금한 IT 인프라
- 국내도서
- 저자 : 정송화,김영선,전성민
- 출판 : 제이펍 2018.06.11
네트워크: 정보를 주고 받는 장비와 그 경로상의 모든 유/무형 환경.
가장 기본적인 요소는 ‘식별’. 상호 간의 식별을 가능하게 해주는 것이 프로토콜( 컴퓨터나 네트워크 장비가 서로 통신하기 위해 미리 정한 약속, 규약 / 국제 인터넷 표준화 기구(IETF)와 전기 전자 기술자 협회(IEEE)에서 국제 표준을 정하고 있음)
(p.121~)
OSI(Open System Interconnection) 7계층: 외국인과 대화할 때 서로가 이해하는 언어를 써야 대화가 가능하듯, ‘상호 이질적인 네트워크 간의 호환성을 위해서 제정한 개방형 통신 모델’.
각 계층(Laser 2, 3, r)가 개별적으로 동작하는 것이 아니라 상호 연관성을 가지고 동작. 송/수신자가 서로 다른 운영체제, 브라우저, 회선 환경에서도 통신이 이루어져야 하기 때문에 송신자는 각 계층에서 필요한 정보를 전달하기 위해 상위에서 하위 계층으로 이동하면서 ‘헤더’라고 부르는 구분자를 계속 덧붙임. 계층별로 전달받은 데이터에 대한 관리와 제어를 위한 고유의 식별 정보가 있음. L2에서는 MAC(Media Access Contro)정보, L3에선 ip정보, L4계층에선 포트 정보. 예를 들어 ‘L2 스위치’는 MAC 주소를 가지고 통신을 하는 장비라고 이해하면됨.
전송 제어 프로토콜(Transmission Control Protocol/ Internet Protocol)
IP는 connectionless protocol의 특성을 가진다. Ignore, 무시한다는 뜻으로 상대방과의 연결 여부에상관 없이 데이터를 보내고 받는다. 수신자가 정상적인 상태인지 응답 불가능한 상태인지 확인하지 않고 그냥 보냄. 수많은 사용자에게 일일히 전송 확인을 하면 과부하가 생기기 때문. 이 때 데이터의 신뢰성을 보장하는 역할을 TCP가 함. Connection-oriented한 연결을 구현하기 위하여 만들어짐. 상대방이 데이터를 받았음을 보장. 정상적으로 전달되지 않으면 다시 전달(Retransmission), 통신 선로가 좋지 않아 데이터 순서가 뒤바뀌어 전달되면 바로 잡아주는 redering도 함. 전송 중 연결이 중단되었는지 확인하는 기능과 송수신 측의 버퍼 사이즈나 현재 상태를 확인하여 미처 처리되지 못한 데이터가 있으면 전송 속도를 조절해 주는 기능 flow control도 있음.
네트워크 장비
리피터(증폭기, repeater): 광섬유 케이블을 통과하는 신호를 증폭시킴.
허브(hub): L1에서 말하는 허브랑 더미 허브. 초창기 유선 인터넷 공유기로 이해하면 됨. 발생된 신호는 나머지 모든 포트로 재전송되며 각 포트는 리피터 역할도 수행. 한번에 한명만 통신할 수 있고, 통신 이용자가 많아지면 신호 충돌도 증가하여 병목 발생.
L2 스위치: 서버와 직접 연결되는 장비로 ‘액세스 스위치’ 혹은 ‘스위칭 허브’라고 부르기도 함. 데이트 링크 계층까지만 참조하여 송신자의 헤더에 포함된 목적지의 MAC 주소를 확인하고, MAC 주소테이블을 참조하여 데이터를 전달함. 허보와는 달리 포트별로 다른 속도로 제공할 수 있고, 각 포트는 고유의 MAC을 가지고 있음.
.L2 브리지: 예전에는 허브(L1)와 허브(L1)를 이어서(L2) LAN을 확장해 주던 장비. 요즘은 스위치가 그 역할을 수행하고 있음.
VLAN(Virtual Local Area Network): 물리적으로 구분된 여러 개의 LAN 구성을 사용 환경에 맞게 논리적으로 확장할 수 있도록 해 주는 기술. 스위치는 같은 도메인의 사용자(같은 조직)들만 연결하여 사용할 수 있습니다. 만약 장비는 1대인데 2개의 조직이 사용해야 한다면, 이때 VLAN 기술이 사용된다.사용할 포트를 지정하면 포트에 연결된 모든 사용자는 같은 VLAN에 소속되게 되어 물리적인 경계가 없어지고 논리적으로 분리된 네트워크를 구성할 수 있게 된다. 하드디스크의 파티션과 같은 개념으로 이해하면 된다.
클라우드
‘인터넷 기반의 웹 소프트웨어로 서비스를 제공하고 실시간 확장성을 보장하며, 사용한 만큼 비용을 부과한다.’
돈만 지불하면 언제 어디서나 쉽고 빠르게 기능이나 자원을 서비스 해주는 것이 클라우다(p.198)
IasS: 네트워크, 서버, 스토리지에서 운영체제까지 인프라 영역을 서비스 형태로 제공하는 것. 고객의 입장에서 카탈로그에서 필요한 서버 스펙을 골라서 비용을 내고 사용하는 것.
Pass: 플랫폼은 애플리케이션이 구동할 환경. 그 환경에 대해서는 개발자가 전혀 관여하지 않아도 되는 수준의 서비스를 제공하는 것을 PaaS라 한다.
자바나 자바스크립트 기반의 소프트웨어들만 가능. (자바 가상 머신 기반에서 수행되는 애플리케이션만 구동)
SaaS: 업무 담당자 관점의 클라우드. 개발자 없이 사용자 환경에 최적화된 소프트웨어를 제공하는 것을 목표로 함. 원하는 기능으로 구성된 소프트웨어를 사용하고, 사용한 기능에 대해 비용 지불.
아마존 AWS와 같이 비용만 내면 누구든지 사용할 수 있는 퍼블릭 클라우드
정부나 대기업이 자체적인 클라우드 센터를 만들오 이용하는 프라이빗 클라우드 (서버 호스팅?)
위 두개를 연동하여 구축하는 하이브리드 클라우드
*레거시 시스템: 새로운 것으로 대체되었거나 대체될 예정인 오래된 기술, 방법론, 컴퓨터 시스템, 소프트웨어 등을 말함.
클라우드에 맞는 애플리케이션 형태와 개발 방식은 따로 있다.
모놀로식(monolithic architecture) 아키텍처에서는 하나의 애플리케이션 패키지에 모든 비즈니스와 기능을 탑재하여 업무와 기능 간의 호출 구조가 메모리 참조 방식으로 이루어짐. Call-by-reference라고도 함. 아주 작은 업무 하나가 개선되어 배포될 경우에도 전체 애플리케이션 패키지가 배포되어야 하므로 유지보수 비용이 증가. 이 아키텍처에서는 전체 업무의 최대 사용량만큼의 리소스를 미리 확보하고 있어야 하므로 클라우드를 쓰면 낭비하고 있는 인프라 자원도 돈을 지불해야함.
개발 형태적 측면에서는 MSA(Micro Service Architecture)가 적합. 기업 또는 서비스를 구성하는 큰 덩어리의 프로그램을 업무 단위로 작은 덩어리의 프로그램 다ㄴ위로 쪼갬. 중복되는 부분은 중복 개발 진행하여 프로그램 간의 호출을 최소화함. 꼭 호출해야하는 경우 REST API방식으로 호출하도록 개발. 이리하여 상호 의존성 최소화하고 클라우드 기민성을 최대한 이용할 수 있고 비용적인 측면에서도 유리해짐.
*REST (Representational State Transfer Application Programming Interface) API: 인터넷을 통해서 HTTP 프로토콜을 사용하여 애플리케이션 간에 데이터를 전송하거나 제어하는 인터페이스. 쿠키나 세션 등의 별도의 전송 계층 없이 통신할 수 있는 설계를 지향한다. (P.210, 개발자도 궁금한IT 인프라)
SOA(Sevice Oriented Architecutre)는 서비스 지향 아키텍쳐라고도 함. 여러 개의 작으느 덩어리 단위의 프로그램을 전체 시스템에 분산하여 운영하는 개념으로 Msa와 상당부분 같으나 반대로 모든 기능과 업무를 표준화 하고 사전에 정의되니 인터페이스 규약으로만 서비스할 수 있음. 프로그램 간 기능 중복성도 최소화 하고자 함. 따라서 치밀하게 설계되어야만 구축하고 유지보수가 가능.
애자일 방법론: 완성된 서비스의 모습을 기획 및 설계 단계에서 모두 정의하고 시작하는 거이 아니라, 기본 기능의 프로토타입과 개발 이후 다음 단계의 기능을 프로토타입하고, 개발하고, 또 다으므 단계를 준비하게 됩니다. 따라서 최종적으로 이르는 완성된 서비스의 형태도 가늠하기 어렵고, 사용자의 수나 트래픽을 예측할 수도 없기에 클라우드 사용량 측정 후 비용 부과 방식이 매우 어울림.
데브옵스(DevOps): 애자일 방식으로 개발 진행하다 보면 프로젝트가 완료되지 않은 시점에도 사용자에게 서비스가 가 가능한 수준에 도달하는데 이때 런칭하여 서비스 운영과 함께 개발을 동시 진행하는 것.
오픈스택: 오픈소스 프로젝트. 2010년에 시작하여 1년에 두 번씩 새로운 버전이 나옴. 전 세계의 기업,개발자가 전문가로 인정받기 위해 자신의 기술과 노력을 보여주므로써 유무형의 보상을 기대하는 시스템. 렉스페이스와 나사가 오픈스텍의 핵심이 되는 영역의 소스코드를 기부한 것으로 시작함.
서비스들의 집합체로 기존의 인프라 기능들이 소프트웨어적으로 구현되어 있음. SDx(Software Defined Anything). 오픈스텍을 설치하여 각각 서비스를 배치하면 해당 서버가 서버 가상화 하이퍼바이저, 네트워크 장비, 스토리지가 될 수 있음. 오픈스텍을 통해 모든 하드웨어를 만들어 낼 수 있는데 그런 장비들의 상황을 보고 제어하기 위한 GUI가 호라이즌(Horizon)임.
노바(Nova)는 VM을 생성, 삭제, 기동, 종료 하는 보조 역할. KVM(Kernel-based Virtual Machine, 커널기반 가상 머신) 이나 VMware, Xen 등의 하이퍼바이저 기술이나 리눅스 컨테이너 등을 제어하는 개념. 하이퍼바이저들은ㅇ vm들을 관리하는api가 있는데 이 API를 가지고 VM을 생성, 삭제,관리. 어떤 하이퍼바이저들을 사용하는지 관계없이 수평적 확장을 하기 위해 설계된 개념. 파이썬을 작성되어 있어 하드웨어 이식성이 높고 레거시 시스템들과 서드파티 제품들과 연동기능이 매우 강력하다. à 하이퍼바이저거 태생적으로 하나의 호스트 서버를 제어하기위한 기술인데 노바를 이용하면 다양한 환경에서 쉽게 사용할 수 있도록 있음.
*레거시 시스템: 새로운 것으로 대체되었거나 대체될 예정인 오래된 기술, 방법론, 컴퓨터 시스템,소프트웨어 등.
오픈스택에 가장 적합한 리눅스 배포판은? 우분투
: 2004년에 출시된 리눅스 배포판으로 가장 넓은 사용층을 가진 배포판이며, 다른 배포판에 비하여 상대적으로 사용자 편의성이 매우 높다. 어원은 남아프리카 반투어로 ‘네가 있으니 내가 있다’라는 윤리 사상을 일컫는 말이다.
우분투는 컴퓨터에서 프로그램과 주변기기를 사용할 수 있도록 해주는 운영체제 중 하나다. 안드로이드 운영체제처럼 리눅스 커널에 기반한 운영체제로 모바일과 데스크톱PC, 서버에도 우분투 운영체제를 설치해 사용할 수 있다. (from NBP glossary)
-> 윈도우 운영체제, 안드로이드 운영체제처럼 리눅스 커널에 기반한 운영체제가 우분투구나!
하이퍼바이저로 VM을 사용하는 방식은 하이퍼바이저 위에 하드웨어를 에뮬레이션 하여 논리적으로 별도의 시스템을 만드는 것
도커 같은 컨테이너의 경우에는 커널과 별도의 라이브러리를 로드하여 애플리케이션 수행 환경을 독립시켜 주는 방식.
컨테이너 방식이자원 효율성에 더 유리하지만 자원 사용이 독립적이지 않으므로 인프라 자원의 사용량을 정확하게 측정하기 매우 어려움.
스위프트(Swift)
오브젝트 스토리지(데이터를 저장하는 단위). 동영상,엑셀파일, 프레젠테이션 파일 등이 하나의 오브젝트 단위. REST API를 통해서 가져옴. Like 웹하드에서 동영상, 엑셀파일, 프레젠테이션 파일들을 가져와 쓰는 것처럼?
/ 오픈스텍에서는 스위프트에 VM이나 컨테이너 이미지를 저장해 두고 글랜스(Glance)를 통해 이것을 프로파일화하여 호라이즌 웹 대시보드로 GUI를 제공한다.
네트워킹 서비스인 뉴트론(Neutron): NFV(Network Function Virtualization)과 비슷한 개념으로 수많은 네트워킹 기술을 소프트웨어 기반으로 구현한 것. L1부터 L7까지 그리고 방화벽 등 네트워크 관련 장비의 모든 기능을 다 수행함. 낮은 레이턴시(Low latency)가 요구되며 구성하기도 힘들고 구성 결과가 클라우드 전체에 영향을 미치는 어려운 서비스.
오픈 스택은 IaaS 사업자가 이용.
*정리하기: 에뮬레이션? 하이퍼바이저?
'공부 기록 > IT 기술' 카테고리의 다른 글
사용자 에이전트 (User Agent, UA) (0) 2020.03.11 [개념 공부] API, 워드프레스 (0) 2019.12.15 [개념 공부] Open API / REST API / OAuth / Curl (2) 2019.10.18 그림으로 공부하는 IT 인프라 구조, 야마자키 야스시 (0) 2019.09.18 REST API 공부 (0) 2019.08.26