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

Spring으로 SOAP기반 CXF 웹서비스 구축하기

Spring으로 SOAP기반 CXF 웹서비스 구축하기
오늘은 스프링프레임워크에서 CXF를 이용하여 SOAP기반의 웹서비스를 만드는 과정에 대해 소개합니다. 웹서비스의 전반적인 개요는 포스팅 SOAP 기반 웹서비스 구축하기(“http://www.nextree.co.kr/p2010/”) 을 참고하시면 좋습니다. 이 글은 웹서비스 구축에 초점을 맞추었습니다. 웹서비스는 서비스를 처리하는 부분(Service Provider)과 서비스를 요청하고 처리 결과를 표현하는 부분(Service Consumer/Presenter)이 분리되어 있더라도, Web을 통해 통신하여 실행되는 시스템의 컴포넌트 묶음을 말합니다. 단순히 MVC와 같이 Model과 View, Controller를 분리한 것이 아닌, Back-end Side와 Front-end Side를 컴포넌트 뿐 아니라 개발환경까지 물리적으로 분리 된 상태에서 실행되는 시스템입니다. 몇 달 전 웹서비스 프로젝트에 참여하였을 때, 저희는 서버사이드를 개발하고 인도의 개발사에서 UI를 개발했습니다. 그렇다면 저희가 제공하는 웹서비스를 그들은 어떻게 받아서 처리할 수 있을까요? 아래 그림을 통해 WebService 원리를 살펴봅니다.     그림 1과...
read more

jQuery: 그리드 플러그인 – jqGrid (2/2)

jQuery: 그리드 플러그인 – jqGrid (2/2)
jqGrid 첫번째 글에서는 그리드의 환경설정과 그리드를 사용하기 위해서 꼭 필요한 몇 가지들을 알아보았습니다. 이번 글에서는 프로젝트를 진행하면서 많이 사용한 그리드 메소드와 경험을 소개하겠습니다.     1. 메소드 그리드에서 제공하는 메소드를 사용하기 위한 사용법부터 알아보겠습니다. jQuery('#grid_id').jqGridMethod( parameter1,...parameterN ); ex) jQuery('#grid_id').setGridParam({...}).hideCol('somecol').trigger('reloadGrid'); 12 jQuery('#grid_id').jqGridMethod( parameter1,...parameterN );ex) jQuery('#grid_id').setGridParam({...}).hideCol('somecol').trigger('reloadGrid'); grid_id는 그리드가 설정된 ID입니다. jqGridMethod는 그리드에서 제공하는 메소드입니다. 메소드에 따라 parameter가 존재할 수 있습니다.   그리드에서 기본적으로 제공하는 메소드의 사용법은 위와 같습니다. 그리드 3.6버전...
read more

« Previous Entries