시작은 부담없이 클라우드(AWS)로…

Start-up 인프라를 클라우드로 구성하면 장점이 많습니다. 사업성이 보장되지 않는 상태에서 장비 구매비용(혹은 연단위 임대비용)과 장비 delivery에 대한 시간투자, 장비 관리 시간투자 등의 비용을 많이 절약할 수 있습니다.  이런 이점은 Start-up 기업들이 우선적으로 고려하는 인프라 환경을, 클라우드라는 가상의 환경으로 고려하는 이유이기도 합니다. 그러나 클라우드는 사용한 비용만큼 지불하는 구조임에도 불구하고, 결코 저렴하다고는 말할 수 없습니다. 또한 클라우드 환경의 관리가 편하다라고 말할 수는 없습니다. 비용 효율화를 위해 관리자(클라우드 인프라 관리자)는 쓸데없는 비용 누수에 신경써야하며 누구나가 의심하는 클라우드 환경의 보안 부분을 신경써야 합니다. 하지만 잘 구성되어있는 환경이라면, 저렴한 비용과 관리의 편리가 가능합니다. 처음 잘 구성되어야 한다는 선행조건을 만족하기 위해, AWS 클라우드 환경의 인프라 설계와 설계된 구성에서의 기본적이지만 필수적인 사항을 이야기 하려 합니다.  작년 하반기 정부의 클라우드 발전법 발의와 이번달(2016년1월) AWS 한국 지역 오픈으로, 지금까지보다 클라우드 환경이 더 많이 사용될 것으로 예상됩니다. 다음 그림은...
read more

버추얼 머신을 통한 개발 환경 설정

스마트폰이 처음 등장했을 때, 내가 원하는 기능을 제공하는 앱을 검색해서 설치해 사용하고, 더이상 필요가 없으면 바로 없앨 수 있는 기능을 보고, 개발환경도 설치나 설정에 있어서 앱 스토어와 같은 곳에서 필요한 도구나 프로그램을 가져와 사용하도록 갖추어진다면, 정말 편리하고 간편할 것 같다는 생각을 했었습니다. 이러한 상상을 했던 것이 불과 몇년전인데, 상상했던 환경을 구성한다는 것이 이제는 현실이 되는 것 같습니다. 현실이 되게 하는 그것이 바로, ‘가상화 기술’입니다. 요즘과 같이 시스템 구성 요소가 다양한 OS, 다양한 서버, 다양한 솔루션들로 이루어지는 환경에서는 개발환경을 하나의 머신이나 OS에 구성하기가 쉽지 않습니다. 반대로, 여러 머신이나 OS에 있는 내용을 하나의 개발 머신또는 OS로 구성하는 것도 쉽지 않습니다. 여기에는 실제 운영환경과 다른 개발환경을 만들어야하는 노력이 필요하며, 다양한 설정 방법을 통해 테스트 및 운영 서버에 배포하도록 해야하기 때문에 그로 인한 부담이나 노력은 상당합니다. 또한 운영팀에서도 하나의 소스를 여러 프로젝트팀들이 접근하여 각자의 개발환경에 맞게 세팅하도록 만든다던지 하는 노력이 필요하고, 여러...
read more

서버룸이 아니라 서버가든(garden)입니다.

서버룸이 아니라 서버가든(garden)입니다.
서버룸(Server Room)에서 나오는 소음이 신경쓰인다. 그렇다고 서버룸의문을 닫을 수도 없다. 내부 열기가 대단하다. 주말에 혼자 사무실에 있을 때는 서버룸을 닫았다 열었다를 반복하기도 한다. 거대한 랙과 요란한 팬소리는 언뜻 서버의 위엄을 보여주는 듯 하지만, 요즘 시대에는 어울리지 않는 느낌일 뿐이다. 소음, 에너지 낭비, 열기, 그리고 공간 낭비까지 보태서 쾌적해야할 사무공간을 망치는 골치덩이일 뿐이다.  그래서 이 넘들을 어떻게든 손을 보겠다고 벼르고 있었다. 2013년 사무실을 바로 옆 건물로 이사를 했다. 기회가 왔다. 시꺼먼 사각 고철덩어리 모양을 하고 있는 랙과 서버를 중고로 팔아 치웠다. 그리고 기존 서버의 용량보다 한 단계 더 높은 수준으로 장비를 준비했다. 6테라 NAS 2대, 맥미니 서버 2대, 에어포트 익스트림 2대. 이 세 종류 만으로도 기존 서버를 훌쩍 뛰어 넘었다. 거기다 모든 사무실 컴퓨터는 무선으로 연결하기로 했다. 따로 서버룸을 마련할 필요가 없다. 여섯 대의 기기가 차지하는 공간은 작은 테이블이면 충분했다. 앓던 이를 뺀 것처럼 속이 다 시원했다. 사무실에서 더 이상 서버의 소음은 들리지 않았다. 대신 건물 옆의 1호선 기차소리가...
read more

알고보면 쉬운 웹서비스

알고보면 쉬운 웹서비스
웹 서비스를 적용한 애플리케이션을 구축하는 것은 쉽지 않습니다. 그러나 웹서비스의 개념과 구성을 큰 그림으로 이해한다면, 웹서비스를 구축하는 과정이 다르게 느껴질 수 있습니다. 오늘은 그동안 웹서비스를 공부하면서 개운치 않았던 부분들을 긁어드리려 합니다. 알고보면 쉬운 웹서비스에 대해 함께 살펴봅니다.   왜 웹 서비스를 선택할까요? 먼저 왜 웹서비스를 사용하는지에 대한 궁금증부터 해소해볼까요. 우리가 웹서비스를 사용하는 목적 중 핵심은 바로 플랫폼 중립(neutrality)입니다. 하나의 서비스를 제공하면, 다양한 플랫폼의 클라이언트가 서비스를 받아서 사용할 수 있도록 위함입니다. 외부 애플리케이션의 기능을 연결하기 위해서는 여러 기술적 제약이 따르기 마련입니다.  하지만 현재, 많은 애플리케이션은 PC 뿐 아니라 모바일기기와 태블릿 PC 등 다양한 기기가 사용 가능합니다. 하나의 기능을 각 플랫폼에 맞게 붙이는 것은 아주 비효율적이기 때문에, 플랫폼에 상관없이 기능을 제공하고 사용할 수 있는 기술이 필요했습니다. 이러한 목적을 가지고 애플리케이션을 서비스로 제공하자며 등장한 아키텍쳐가 SOA(Service Oriented Archetecture)이며, 이를...
read more

한양여자대학교: 신입사원 고용지원 사업을 소개합니다.

한양여자대학교: 신입사원 고용지원 사업을  소개합니다.
 일학습병행제 사업의 공동훈련센터로 지정된 한양여자대학교에서 알려드립니다. 연락처: 한양여자대학교 이상대교수 02-2290-2381 / sdlee2k@gmail.com 고용노동부에서 청년고용을 촉진하고, 신입인력에 대한 현장 교육훈련을 지원하기 위해 시행하고 있는 “중소기업 신입사원 고용지원 사업” (이하 “일학습병행제”)에 대한 소개를 드리고자 합니다.   일학습병행제는 독일·스위스식 도제제도(수공업기술자 양성제도)를 한국에 맞게 설계한 도제식 교육훈련제도로써,  기업이 현장에서 필요한 실무형 인재를 직접 양성하고 활용하기 위해, 근로자를 채용한 후 일을 담당하게 하면서 현장교육과 이론교육을 동시에 제공하는 새로운 교육훈련제도입니다. 어떤 기업이던지 채용을 하게 되면, 신입사원 또는 경력사원을 대상으로 교육을 진행할 것입니다. 따라서 기업 입장에서는 일학습병행제 사업을 통해 기존에 진행하고 있었던 교육을 체계적으로 수립하는데 전문가의 도움을 받을 수 있고, 기업의 니즈에 맞는 맞춤형 교육훈련제도를 수립하여 향후에도 계속 가져갈 수 있으며, 일학습병행제를 진행하는 기간동안 정부의 재정적 지원까지 받을 수 있다는 점에서, 이 사업의 매력을 충분히 느낄 수 있을...
read more

CI (Continuous Integration) 이란?

CI (Continuous Integration) 이란?
소프트웨어 개발에서 유지보수로 연결되는 지점은 소스관리/빌드/배포의 활동이 됩니다. 물론, 소스코드 수정이 발생되기는 하지만, 소스관리/빌드/배포의 활동이 주로 발생하기 마련이며, 이는 유지보수 시점에 확실한 절차와 방법을 필요로 합니다. 개발 시점에 이러한 활동을 지원하는 기법 중에 CI (Continuous Integration)가 있으며, 이는 오래 전부터 소프트웨어 개발에 있어서 위험을 줄이는 방식으로 사용되고 있었습니다. CI 라는 용어가 직접적으로 사용되지는 않았지만, 1993년 Mattew Pittman이 쓴 ‘Lessons Learned in Managing Object-Oriented Development’라는 논문[참조 1]에서 “예정된 통합(scheduled integration)” 이라는 용어를 사용하고 있으며, 이는 CI를 수행할 때의 한가지 이슈에 대해 완벽한 테스트의 부족을 언급하고 있습니다. 즉, CI가 단순히 소스코드의 빌드와 배포만을 의미하지 않고 그 안에는 소스코드를 검증할 수 있는 방법이 분명 필요하다는 것을 말하고 있습니다. 코드 컴플리트(Code Complete)라는 책을 쓴 Steve...
read more

Java: enum의 뿌리를 찾아서…

Java: enum의 뿌리를 찾아서…
이번 글에서는 자바 1.5버전부터 새롭게 추가된 열거형 상수인 enum(enumeration)에 대해 알아보겠습니다. 열거형은 서로 연관된 상수들의 집합입니다. 이번 글은 enum 정의와 enum 사용방법, 그리고 enum 활용법을 살펴 봅니다.   1. enum이란? 관련이 있는 상수들의 집합입니다. 자바에서는 final로 String과 같은 문자열이나 숫자들을 나타내는 기본 자료형의 값을 고정할 수 있습니다. 이렇게 고정된 값을 상수라고 합니다. 영어로는 constant입니다. 어떤 클래스가 상수만으로 작성되어 있으면 반드시 class로 선언할 필요는 없습니다. 이럴 때 class로 선언된 부분에 enum이라고 선언하면 이 객체는 상수의 집합이다. 라는 것을 명시적으로 나타냅니다. enum은 enumeration이라는 셈, 계산, 열거, 목록이라는 영어단어의 앞부분만 따서 만든 예약어입니다.   2. 상수를 정의하는 다양한 방법 자바 1.5버전 이후에는 상수를 정의할 때 enum을 많이 사용합니다. 하지만 enum이 나오기 이전에는 다양한 방법으로 상수를 정의했습니다. 그래서 enum에 대해 알아보기에 앞서 자바 1.5버전 이전에는 어떻게 상수를...
read more

헷갈리기 쉬운 “동등비교” 와 “정렬”

헷갈리기 쉬운 “동등비교” 와 “정렬”
입사하여 처음으로 참여하게 된 프로젝트는 보험회사 직원들의 업무 관리 프로그램을 구축하는 것이었습니다. 자바로 개발하는 프로젝트는 처음이여서 어떻게 구현해야하는지에 대한 걱정이 제일 컸습니다. 특히, 새로 구현하는 부분보다 구현되어 있는 부분을 보완하여 만드는 부분이 어려웠습니다. 기존에 구현 되어있는 코드를 보면서 기존 업무를 정확히 분석해야하기 때문입니다. 직접 코딩한 것이 아니어서 한 눈에 코드가 들어오지 않았고, 함축적으로 코딩이 되어 있어 숨어 있는 로직이 있나 살펴보아야 했으며, 구현방법이 과거와 달라 제대로 해석을 하고 있는지 의문이 많이 들었습니다. 이런 코드들을 보면서 책으로 공부 할 때보다 현장에서 직접 겪어보니 공부했던 것이 머릿속에 쏙쏙 들어오면서 혼란스러웠던 점들이 정리가 되었습니다. 그 중에 한 부분은 동등비교와 정렬에 관한 것입니다. 저는 프로그램을 사용하는 사용자 role를 구현할 때 객체들을 비교해야하는 경우가 많이 있었습니다. 어떻게 구현을 해야할까 생각하던 중 JAVA 책에서 배운 여러 가지가 생각났습니다. “equals()” , “==” , “compare to()”, “comparable”, “comparator” 등 입니다. 이 중...
read more

« Previous Entries