개발
-
오픈스택 구조 분석개발/클라우드컴퓨팅 2017. 3. 7. 23:12
오픈소스를 좀더 심도있게 분석하기 위해 설치도 하고 내부 소스 코드도 보려 했으나, 설치 가이드 글들을 전혀 이해를 할 수 없어서 논문 부터 차근차근 읽고 가기로 했다. 'OpenStack: Toward an Open-Source Solution for Cloud Computing'이란 논문을 읽었는데 한창 오픈스택이 뜨기 시작한 2012년도에 나온거라 그런지 별 다른 내용이 없었지만 그래도 오픈스택의 전체적인 구조는 이해하는데 도움이 된 것 같다. 논문에 따르면 오픈스택의 구조는 위 그림처럼 다섯가지로 나눌 수 있다고 하는데 여기서 주된 요소는 Compute, Image, Object라고 한다. 각각에 대한 설명은 다음과 같다. OpenStack Compute: IaaS 클라우드를 관리 담당하는 플랫폼..
-
오픈스택이란?개발/클라우드컴퓨팅 2017. 3. 7. 21:58
클라우드 컴퓨팅을 공부하면 자주 등장하는 기술이 오픈스택이다. 오픈소스의 형태로 클라우드 컴퓨팅 환경에서 많은 부분을 지원한다고 하지만, 정확히 오픈 스택이 어떤 일을 하는지, 구체적으로 어떤 목적에 의해 만들어 졌는지에 대해선 아는 바가 없어서 간단히 정리를 해보려고 한다. 오픈스택 홈페이지에서는 오픈스택을 다음과 같이 소개한다. OpenStack is a cloud operating system that controls large pools of compute, storage, and networking resources throughout a datacenter, all managed through a dashboard that gives administrators control while empo..
-
클라우드 가상화와 Docker개발/클라우드컴퓨팅 2017. 3. 5. 14:13
클라우드 컴퓨팅은 가상화 기술을 활용해 하나의 서버에 여러 개의 가상 컴퓨터를 돌릴 수 있는 환경을 제공해서 서버 장비가 없는 사용자들도 가상 컴퓨터를 할당 받아서 서버를 구동 할 수 있는 기술이다. 여기서 만들어지는 가상 컴퓨터를 가상 머신(Virtual Machine)이라 하고 가상 머신을 생성시키는 것을 하이퍼바이저(Hypervisor)라 한다. 서버 가상화에서 주로 사용되는 하이퍼바이저는 Xen, KVM, VMware가 있다. 이 기술들은 공통적으로 하드웨어 자원(CPU, 하드웨어, 인터럽트 핸들러 등)들을 관리 하고 Virtual Machine이 사용 할 수 있는 가상 장치를 제공한다. 장치들을 제공 받은 Virtual Machine은 갖고 있는 커널 이미지 및 루트 파일 시스템을 이용해서 부팅..
-
클라우드 컴퓨팅(Cloud Computing)개발/클라우드컴퓨팅 2017. 2. 25. 12:58
서버 장치와 인터넷의 성능이 급격히 발전하면서 모든 연산 작업을 사용자가 갖고 있는 단말기 내에서 처리할 필요 없이 인터넷을 이용해 제 3의 공간(서버, 클라우드)에서 처리 할 수 있게 되었다. 인터넷을 이용해 필요한 컴퓨팅 자원(서버, 스토리지, 애플리케이션, 서비스)을 어디서나 접근 및 이용 가능한 형태를 클라우드 컴퓨팅 서비스라고 한다. 개념적으로만 설명하면 어려우니 쉽게 예를 한 번 들어보자. 사용자 음성인식은 컴퓨팅 연산 작업과 데이터의 양이 많이 필요한 인공지능 서비스다. 입력된 목소리 값과 비교해야 할 기존 데이터 값도 많고 사용한 알고리즘도 단순한 작업들이 아니다. 비교 데이터 값을 모두 단말기 내에서 저장하기엔 용량이 부족하고 알고리즘 연산들을 모두 처리하기엔 하드웨어 성능이 딸린다. 또..
-
입출력제어(ioctl)개발/컴퓨터사이언스 2017. 2. 11. 13:10
리눅스는 크게 시스템 영역(kernel)과 사용자 영역(user space)을 분리해서 악의적으로 만든 사용자 애플리케이션이 시스템 핵심 영역에 침범 할 수 없도록 만들어졌다. 하지만 애플리케이션을 개발하다보면 커널 영역내에 있는 함수들을 사용해야 할 일이 있는데 이런 경우 커널에서는 기본적으로 시스템 콜을 이용해 커널영역에 있는 함수들을 사용 할 수 있도록 지원한다. 하지만 시스템 콜은 기껏 해야 300개 정도 등록 할 수 있는데 모든 사용자 애플리케이션이 시스템 콜에 필요한 함수를 등록하기엔 수가 부족하다. 이때 사용 할 만한 툴이 ioctl이다. ioctl은 유저영역에 있는 애플리케이션이 현재 동작 중인 드라이버에 값을 전달하거나 받아 올 수 있도록 한다. 동작 과정을 간단히 그림으로 설명해보면 다..
-
자동차시장 오픈소스 - 2개발/오픈소스 2017. 1. 31. 23:48
스마트폰 OS로 재미를 본 안드로이드가 자동차 OS까지 노리고 있다는 건 이미 잘 알려진 사실이다. 스마트폰때처럼 안드로이드는 차량 제조사(OEM)들이 제공하는 하드웨어 환경(MCU, 네트워크, 자동차 서비스)을 간단히 구조화해 여러 OEM 하드웨어 환경에서 동일하게 작동 할 수 있는 프레임워크를 제공한다. 하드웨어를 추상화해 공통된 프레임워크를 제공하는 방법을 HAL(Hardware Abstraction Layer)라 한다. HAL의 가장 큰 장점은 API화이다. 일반 사용자들은 느낄 수 없지만 API화는 개발 할 때 강력한 무기가 된다. 스마트폰의 경우를 생각해보면, 안드로이드 애플리케이션을 개발 할 때 가장 편리 했던 점은 소프트웨어 개발자가 하드웨어를 전혀 신경 쓸 필요가 없다는 점이었다. GPS..
-
6. XenStore, Xenbus개발/가상화 2017. 1. 22. 13:40
Dom0의 장치드라이버인 Backend와 DomU의 장치드라이버인 Frontend가 서로 통신하기 위해선 각 상대 드라이버(Otherend) 상태와 연결 포트와 같은 정보들이 필요하다. 이런 정보들을 각 드라이버들마다 따로 정보를 관리하는 툴을 만들어서 처리 할 수 있겠지만, Xen에서는 이런 정보들을 Xenstore라는 자료구조를 통해 일괄적으로 관리할 수 있게 한다. Xenstore에는 이런 정보들이 입력된다. Dom0에서 xenstore-ls를 입력하면 현재 활성화된 Domain의 목록과 각 Domain들이 갖고 있는 장치들의 종류와 상태, 위치, 타입 등등을 알 수 있다. 그림을 보면 "local/domain/[domain id]/[device type]/[driver name]"처럼 경로의 형태..
-
자동차 시장 오픈소스 - 1개발/오픈소스 2017. 1. 15. 19:18
IoT 기술의 발달로 전보다 자동차 내에 다양한 기능을 넣을 수 있게 되면서 이런 다양한 기술을 자동차 내에 개발 할 수 있는 표준을 제공하는 것이 업계 내에선 화두가 되었다. 이에 따라 큼직한 자동차 회사들은 다른 IT 회사들이 자동차 내 IVI(In Vehicle Infotainment) 소프트웨어 개발할 수 있는 표준을 제공하기 위해 끼리끼리 모여서 오픈소스 프로젝트를 진행하고 있다. 대표적인 오픈소스 프로젝트로 GENIVI와 AGL(Automotive Grade Linux)가 있다. 두 프로젝트는 여러 면에서 유사한데 굳이 차이점을 고르라면 참여하고 있는 멤버와 AGL이 오픈소스로 유명한 Linux재단에서 운영되고 있다는 점 정도 일 것이다. 두 프로젝트 모두 Yocto 기반의 개발 환경을 두고 ..