'공감 세미나'에 해당되는 글 6건

허니몬의 IT 이야기/프로그래머, '코드 엔지니어'


오는 토요일에 9번째 공감세미나가 열립니다.

Java life, Java Style  이라는 주제로 열리는 이번 공감세미나에서는, 처음 공감세미나가 열리던 취지와 가장 어울리는 세미나가 아닐까 하며 기대하고 있습니다. 그건 아마도 내가 자바 언어를 사용하는 개발자이고, 앞으로도 자바를 기반으로 해서 돈을 벌어먹고 살고 있는 개발자이기 때문일 것입니다. 자바의 시작부터 현재의 모습을 되짚어 볼 수 있는 좋은 시간이 되지 않을까 기대하고 있습니다. ^^


허니몬의 IT 이야기/프로그래머, '코드 엔지니어'

20120623 공감세미나 8회
=========

  오늘은 충전기의 접촉불량으로 충전이 제대로 되지 않아, 거기에 충전 케이블도 안챙겨오고!, 스마트폰의 전원이
일찍 바닥나는 바람에 세미나 풍경을 찍을 수 없었다. 똑딱이를 하나 장만할까 생각중이다. DSLR은 왠지 무겁단 말야.
오늘 강남에는 크고작은 행사들이 있었다. 차태현 아저씨 싸인회도 있었고, 교보문고에서는 유준상씨 싸인회가 있었다.
  이번에 공감세미나는 150명 정도로 참가인원을 제한했다고 이야기를 들었는데, 세미나 자리는 꽤 사람들이 참석을
하지 않았는지 한산한 모습을 보이기도 했다.

* * * * *

### 0. 각 커뮤니티별 공감뉴스 10분 발표!?
<pre>
  이번 공감세미나부터 세미나에 참여하는 3개 커뮤니티(JBoss, OKJSP, KSUG)의 소식을 10분씩 발표하는 시간을
가지기로 했다. 각 커뮤니티별로 어떤 이야기들을 전해줄지 공감세미나가 열릴 때마다 기대해볼만 하겠다. 아마
커뮤니티들은 '3개월'마다 있을 발표에서 무엇을 전해야할지 부담감을 느끼게 되지 않을까? 커뮤니티와의 의견
조율이 있었으려나? 기술이 빠르게 변해가고 있다지만, 커뮤니티 내에서는 크게 별다른 일이 없을 가능성이 많다.
  '무소식이 희소식'이라는 우리나라 속담이 있잖은가.
</pre>

* 그 밖의 대표적인 기업들의 기술 블로그
    * 네이버 Hello world : [http://helloworld.naver.com/helloworld](http://helloworld.naver.com/helloworld)
    * 다음 DNA : [http://dna.daum.net/DNALatte/](http://dna.daum.net/DNALatte/)
    * SK 플래닛 README : [http://readme.skplanet.co.kr/](http://readme.skplanet.co.kr/)
        - 공감세미나 동영상 감상 가능
    * KTH 개발자 블로그 : [http://dev.paran.com/](http://dev.paran.com/)
* 개인적 의견
    * 기업들이 SW개발 관련 블로그 운영하는 모습은 보기 좋다.
        - 개발자들과 교류가 늘어나고, 그 회사에서 좋은 개발자들과 접촉하기 위한 좋은 기회를 제공한다.
        - 개발자들이 쉽게 접하기 어려운 기술적 흐름을 파악하는데 도움이 된다.
            - 기업이 요구하는 혹은 관심을 가지고 있는, 실무에 사용하고 있는 기술에 대해서 알 수 있는 기회는 흔하지 않다.
            - 그런 기회를 제공해준다.
        - 인터넷 검색하다가 기업 기술 블로그가 검색이 되면 '호오~'하고 조금은 다른 눈으로 보게 된다.
            - 이건... 내 경우에 한정적일지도 모르겠다.

* * * * *

### 1. 상하이 자바 리더 미팅 및 차세대 자바 이야기

* 발표자 : JBoss User Group 김병곤(fharenheit@gmail.com)
* Java Se와 Java EE의 미래(향후 자바의 변화)
* Jboss 공감뉴스
    * 1년 후에 Java에 변화가 일어나게 될 것이다.
        - 2013년 JAVA 8이 발표되면, 기존의 자바와는 다른 새로운 자바가 될 것이다.
    * Java Readers Meeting
    * DevOps
        - 소프트웨어 개발자들과 IT 종사자들 사이의 의사소통, 협업, 융합을 강조한 소프트웨어 개발 방법론
        - 소프트웨어 개바로가 IT 운영간의 상호 의존관계에 대한 산물
        - DevOps는 조직에서 소프트웨어 상품과 서비스를 신속히 생산하는 것에 도움이 되는 것을 목적으로 한다.
        - Delivery(고객에게 상품을 전달한다는거야??)
        - 예제 : [http://dev.paran.com](http://dev.paran.com)
    * 공개SW 유지관리 가이드
        - SW 라이센스
        - 유지보수 : 하청의 느낌이 강하다.
            - 그래서 유지관리로 바꿨다!
        - 공개SW 라이센스비는 없다.
            - 쓰다가 장애가 생기면 컨설팅, 문제해결 등의 비용이 발생한다.
        - 광고 : 녹초된 여친!! 남자는 멀쩡!!! O_o!! 오오오!!
    * Java 커뮤니티 이슈
* Moving Java Forward
    * Oracle 에서 Sun을 인수한 이후 Java 를 배포하기 위해 지원하고 있다.
    * Java Scoredcard 2012
        - Java SE
            - 맥용 JDK 7 공개
        - Java EE
        - Java FX
    * OpenJDK 참여 : Sun JDK가 Open JDK로 대체되어 간다.
        - OpenJDK 가 공식적인 Java SDK가 된다.
        - OpenJDK(GPL2) 90% 이상 오픈소스화 되었다.
        - 우분투 OS에서 사용하는 Java SDK는 OpenJDK 보다는 SunJDK를 추천하고 있다.
        - OpenJDK가 Java SDK의 기준이 된다면, 사람들에게 OpenJDK를 사용하라고 추천해줄 수 있겠지.
    * 2013년 JDK 8 출시예정
        - Tiered compliation default
            - JDK 7u4 Server와 Client를 수용한 JVM이 얹어진다.
    * JDK 8 - Summer 2013
        - Project Jigsaw
        - Project Lambda
            - Clojure
            - 병렬처리(Parallel operations)를 통해서 기능 향상
        - Oracle JVM convergence
        - JavaFX 3.0
        - JavaScript
            - JavaScript JVM 을 제공한다.
    * Java SE vision
        - Interoperability
            - Multi-language JVM
        - Cloud
        - Ease of Use
        - Advanced Optimization
        - Works Everywhere and with Everything
            - Embbeded to Enterprise
    * Java EE
        - Standard for Developing Enterprise Applications
        - Java가 어떻게 Cloud에 대응할 것이냐
        - Java : Platform(PaaS)로 가겠다.
        - Cloud는 상용화된 플랫폼이다.
        - Auto-Provision Service :
        - Elasticity ; 확장성
        - Cloud에 대한 대응을 WAS 수준에서 하겠다.
    * GlassFish
* Project Avator
    * HTML 5 infrastructure for Java Platform
* MySQL
    * NoSQL 형태로 쓸 수가 있다.
    * InnoDB Stroage
    * MySQL을 쓰면서 성능이 안좋다고 하는 것은 MySQL Community Server를 사용하기 때문이다.
        - MySQL Community Server<-> MySQL Enterprise Server
* JAVA 8 : Lambda Expressions(Closure)
    * JEP 107
    * ParallelIterable.forEach();
        - google. Iterables.find()
        - pAccs.forEach((Account a) -> { if(a.balance() < threshold) a.alert(); })
        - *클로저를 공부할 수밖에 없다.*
        - map().reduce()
    * 새로운 JDK가 나왔을 때 공부를 하면 늦는다.
        - 미리미리 공부를 해서 익혀두는 것이 좋다.
        - JDK 업그레이드를 하면 정상적으로 돌아가지 않는다.
            - 컴파일은 되지만, 동작하는 과정에서 RuntimeException 등 예기치않은 예외사항들이 발생한다.
            - JDK 7 -> Lucene 충돌
                - 루씬 : 검색엔진
* 개인적 의견
    * Java는 다양한 언어를 지원하는 VM(Virtual Machine)을 제공하며 Multi platform의 기능을 제공하려고 한다.
        - 개발자들에게 인기를 끌고 있는 언어들이 가지고 있는 여러가지 장점을 흡수하여 변하려 하고 있다.
        - 멀티스레드 및 비동기 처리 기능을 강화하며 다시한번 기술적인 흐름을 만들어보려 한다.
    * Java 8은 새로운 언어로 태어나게 될 것이다.
        - Java 8이 발표되었을 때, Java를 다시 공부하면 늦는다.
        - 미리 계획을 세워 변화에 대비하여 능동적으로 변화에 대처할 필요가 있다.
        - Clojure, Scalar, Python이 다시한번 개발자들의 관심을 받게 될 것이다.
    * 과연 우리나라 개발자들은 그런 변화에 어떤 태도를 보이며 반응할까?
* 참고 사이트
    * OpenJDK 8 Project : [http://openjdk.java.net/projects/jdk8/](http://openjdk.java.net/projects/jdk8/)
    * Java 8 : [http://jdk8.java.net](http://jdk8.java.net)
    * Lamda Project : [http://openjdk.java.net/projects/lambda/](http://openjdk.java.net/projects/lambda/)
    * Jigsaw Project : [http://openjdk.java.net/projects/jigsaw/](http://openjdk.java.net/projects/jigsaw/)
    * 한국자바개발자협회 JCO 그룹 : [http://www.facebook.com/groups/jco.or.kr/](http://www.facebook.com/groups/jco.or.kr/)
        - 여기에 김병곤님이 자바 리더 미팅 때 올린 글들을 볼 수 있다.
        - Java Heist : [https://www.youtube.com/watch?v=HXvm76e2X1Q&feature=player_embedded](https://www.youtube.com/watch?v=HXvm76e2X1Q&feature=player_embedded)
            - 김병곤님이 재미있다고 추천한 작품
    * Clojure : [http://www.clojure.org/](http://www.clojure.org/)
    * Scala : [http://www.scala-lang.org/](http://www.scala-lang.org/)

* * * * *

### 2. Sencha Touch 클라우드, Sencha.io

* OKJSP 11주년 동향
    * OKJSP 주요활동
        - 프리랜서들의 대화장으로 변해가는 것 같아서 자주 가지는 않는다.
        - 전자정부프레임워크 관련 활동

* 발표자 : OKJSP 안광운님
* Sencha : [http://www.sencha.com/](http://www.sencha.com/)
    * 한국 센차 유저 그룹 : [http://www.sencha.or.kr](http://www.sencha.or.kr)
* Sencha
    * ExtJS
    * Sencha Touch 2.0
        - March 6, 2012 Sencha Touch 2.0 Final 발표
        - Senchar SDK Tools 도 함께 사용해야한다.
        - sencha generate .... 자바스크립트로 MVC 쓸 수 있도록 지원
    * Sencha.io
        - sencha touch 를 통해서 강력해지는 툴이다
        - Cloud Platform Service for Sencha Touch 2
* Sencha.io
    * Sencha.io
        - Sencha.io Login
        - Sencha.io Data
            - Data Sharing, Backup, recovery
        - Sencha.io Channel
            - one-to-one message
            - 카톡과 같은 1대1 메시지 서비스
        - Sencha.io Deployment
    * 유료화가 되면 사용하게 될까?
        - 가격 정책이 어떻게 되느냐에 따라서, 사람들이 관심을 가지게 될 수도 아닐 수도 있겠다.
    * 환경설정
        - 운영체제 설치
        - SDK 설치
        - 환경설정
        - 서버 설정
        - 프레임워크 설치
    * Sencha.io SDk
        - Javascript(socket.io)     
* Meteor
        - 이건... 제대로 못들었다.
* 개인의견
    * 내겐 별로 매력적인 녀석이 아니구나.
    * 누가 관심있어 했더라...? ㅡ_-)?
    * 맥북에 알약이 설치되어 있어!!! ㅡ0-)!!!

* * * * *

### 3. 포스트모템 으로 살펴보는 위대한 게임개발팀의 특징

* 발표자 : NCsoft Team Eternal 박일
    * 블로그
        - 박피디의 게임 개발 이야기 : [http://parkpd.egloos.com/](http://parkpd.egloos.com/)
        - rigmania@naver.com
        - twitter : @rigmania
* 최근 발간 서적
    * [위대한 게임의 탄생](http://www.yes24.com/24/Goods/5819514?Acode=101)
    * [위대한 게임의 탄생 2](http://www.yes24.com/24/Goods/6920788?Acode=101)
* 포스트모템(PostMortem)이란? - 게임 분석 측면에서
    * 게임이름
    * 작성자
    * 소개
    * Data Points
    * 잘된 점 5가지
    * *아쉬웠던 점 5가지*
        - 조금 더 나아지기 위해서 필요한 것은 잘된 점보다 아쉬운 점이다.
    * 정리
* '위대한 게임개발팀'?
    * 국내 전체 문화콘텐츠 수출 부분에서 53.2% 차지
    * 게임은 인류의 뇌에게 주는 선물
* 위대한 게임개발팀의 공통점
    * 비전, 프로토타이핑, 디렉터, 프로듀서, 피드백, FGT, 사람, 의사소통, 일정, 크런치
        - 비전
            - 제목부터
                - 던전앤파이터
                - 마계촌 온라인
            - 크레토스 규칙
                - 절대로 웃지 않는다.
                - 공포를 느끼지 않는다.
                - 등을 땅에 붙이는 경우는 죽었을 때 뿐이다.
                - 항상 앞으로 움직인다.
                - 도망치는 움직임이 없다.
                - 개발팀 내에서 만들어갈 게임 속 캐릭터의 성격을 이해하고 거기에 맞춰 만들어간다.
                - 같은 곳을 바라보며 나아가는 것이 중요하다.
                    - 각자 가는 길은 다르지만, 같은 방향을 보며 걷는다는 게 중요하지 않은가?
            - 귀에 못이 박히도록
            - 공유하는 것이 중요하다.
        - 프로토타이핑
            - Experimental Gameplay Project(혼자 4일 동안 개발)
                - Tower of Goo
                - World of Goo
            - 군주 배틀 -> Atlatica
            - uncharted2
                - 프로토타이핑이라는 사이렌의 유혹
        - 프로토타이핑이 재미없어 보일 떄
            - 아트를 붙이면 괜찮지 않을까?
            - 여러 명이 같이 하다보면 창발적인 재미가 나오지 않을까?
                - 똥은 아무리 금칠을 해도 똥이다.
            - 적극적인 하드 코딩, 스크립트 활용 필요
                - 쉽게 만들고 쉽게 버리고..
                - 장난감으로 만들어라.
        - 디렉터, 프로듀서
            - 디렉터 : 투혼
                - 하루는 PD
                - 하루는 PM
                - 게속되는 퍼블리셔와의 미팅
            - 디렉터 : 아크로폴리스
                - 서버개발자와 PD를 겸임
                - 보수적인 서버 개발자 성향 때문에 기획을 많이 포기 : "안돼요!!"
            - 디렉터는 제대로 된 사람이 해야한다?
        - 피드백, FGT
            - 개발자 = 유저. Heroes in the Sky
                - 신입사원 1주일간 플레이 후 발표시킴
            - 개발자 = 유저
            - 개발자 != 유저
                - 대상 유저 : 40대 여성
                - 개발팀에 40대가 한명도 없음
            - FGT : Focus Group Test
                - 특정 대상을 중심으로 테스트
                - Uncharted : 15번의 플레이 테스트
                - Half-life2 : 마지막 2년을 외부 플레이 테스트
            - 가와사키(Kawasaki) 이야기
                - 사용자의 의견을 무조건적으로 수용하다가는 망할 수가 있다.
        - 사람
            - 개발자는 필요이상으로 뽑을 것
                - 업무가 빡빡하면 급한 불 끄느라 정신이 없어 개선을 못한다.
                - 이직, 건강 등의 이유로 퇴사하는 경우는 항상 있다.
                - 업무가 빡빡하면... 악순환의 반복
                - 괜찮은 개발자는 필요할 때 찾으면 없다.
                - 이직은 타이밍!!
                - 중간 관리자를 키울 것
        - 의사소통 - 여러가지 툴
            - Redmine
            - Google 문서도구
            - 위키
            - Trello
            - Yammer
            - 별도의 업무용 그룹웨어
            - 팀의 특성에 맞춰서 적절한 것을 이용
        - 일정과 크런치
            - 일정은 언제나 밀리기 마련
            - 개발자는 갈수록 나이를 먹어가고
            - *개발자가 즐거워야 재미있는 게임이 나온다.*
    * 사업, 퍼블리셔, 해외진출, 툴, 경험과 욕심
        - 사업 - 유료화에 대한 고민 부재
        - 해외진출
            - 해외진출 - 크로스파이어
                - 중국동접 : 270만명, 글로벌매출 : 1조원
                - 전체 직원 절반을 중국에 파견해 현지화에 올인
                - 한국에서 실패한 덕분에 해외에 집중할 수 있었다.
                - 국내에는 이미 많은 FPS 게임들이 존재하고 있었고, 개인적으로 오픈베타 시절에 해봤을 때는 안될 것 같았다.
            - 해외진출 - HIS
                - 가챠 : 프리미엄 개조 시스템
            - 해외진출 - 실크로드 온라인
                - 각 나라를 배경으로 하는 레벨
                - 단순한 퀘스트 구조
        - 툴
            - 좋은 툴이 개발을 편하게 된다.
        - 경험
            - 카발 온라인
                - 경험이 없었기 때문에 오히려 창의적일 수 있었다.
        - 욕심
            - 롤링콩즈
                - 800여개의 퍼즐 중에서 456개만 추려님
                - 더 잘 만들기 위해 더 많이 만들려는 욕심을 버림
            - 작룡문
                - 손을 집어 넣어 보자.
    * 정리
        - 각 프로젝트별로 좋았던 점, 아쉬웠던 점이 달랐다.
        - *똑같은 실수는 하지 않는다*는 오만함이 역사를 반복시킨다.
            - 역사는 반복된다.
        - 너무 늦게 시작했다.
            - 사례들을 수집하는 것이 중요하다.
            - 경험의 공유
        - 경험을 형식지로도 남기자.
            - 일본, 미국으로 수출 진행 중.
        
* * * * *

### 4. node.js의 의미와 자바의 대안

* 발표자 : 박성철, 박용권
* KSUG 뉴스데스크
    * Cloud Foundry's First Birthday
        - PaaS
        - 자기만의 서비스?
    * Spring 3.2 M1 Released
        - 컨트롤러 비동기 처리
        - Asynch annotation
        - Web Application 에서 비동기Asynch 처리를 어떻게 할 것인가에 대해서 스프링에 녹아드는지 지켜볼만 하다.
    * SpringGone 2GX 2012
        - Octer 15-18
    * Facebook 지부 개설
    * Spring Study Coming soon.
    * 뭐든지 말해주세요.
* Node.js October.SKY
    * 유행
        - Google Trends
        - Node.js 가 자바 프로그래머들에게 어떤 의미가 있는가?
    * Node.js 코드
        - 모듈
        - 콜백(이벤트 핸들러)
        - 소켓
            - java.io.Socket 과는 다르다.
    * Node.js 란?
        - 자바스크립트로 고용량 서버 네트워크서버나 애플리케이션을 작성할 수 있는 프레임워크
        - 자바스크립트 & 모듈화(commonJS)
        - 비동기 I/O 추상화
        - 이벤트 기반 단일 스레드 동시성 처리
        - 웹 애플리케이션 프레임워크가 아님!! 기반 (범용적인)네트워크 프레임워크
    * C10K 문제 : [http://www.kegel.com/c10k.html](http://www.kegel.com/c10k.html)
        - 이젠 웹서버가 만 개의 클라이언트를 동시에 처리해야할 때라고 생각하지 않나요? 무엇보다, 웹은 정말 큰 세상이 됐어요. 컴퓨터가 처리할 수 있는 용량도 커졌고요.
        - 결국, 하드웨어는 이제 병목이 아니에요. - 댄 케이글
            - C10K == Client 10000
        - 클라이언트 제어
            - one process for each client
            - one OS-Level thread : many clients
            - one OS-Level thread for each client
            - one OS-Level thread for each active client
    * 스레드thread & 프로세스process
        - 스레드 = 경량 프로세스
            - 프로세스, 생성 느림, 메모리 무거움, 안정성 높음
            - 스레드, 생성 빠름, 메모리 가벼움, 안정성 낮음
            - 스레드 안에는 스택Stack과 PC만 가져간다.
            - 멀티스레드도 무겁다.
                - 메모리를 차지함
                - 생성 비용 발생
                - 컨텍스트 스위칭 비용
                - 공유 메모리/자원 잠금
                - 병목 (또는 데드락, 라이브락)
    * 이벤트 구동 방식
    * 이벤트 vs 스레드
    * 이벤트의 특징
        - 동시 처리 작업량이 많을수록 컨텍스트 스위칭 비용 절약
            - 고속 웹 서버, 메시징
        - 오랫동안 커넥션을 물고 있으면서 CPU보다 I/O 대기시간이 길수록 메모리 절약
            - DB 중심 Ajax 서버, 네트워크 프록시, 채팅, 알림, 대용량 파일 업로드
        - 무상태이므로 스레드의 복잡성이 없음
        - 위 요인을 못 살릴수록 node.js 의 장점이 희미해짐
    * 초간단 웹서버
        - 클로져
    * Node.js의 구조
        - 왜 자바스크립트인가?
            - 자바스크립트는 다른 동적 언어와 차별화되는 어떤 특성이 있다. 스레드란 개념이 없다는 점이다.
            - 자바스크립트의 동시정은 전적으로 이벤트에 기반을 둔다.
            - 클로저 지원
            - 비동기 처리에 익숙함
            - 가장 많이 퍼진 언어 중 하나
            - 단순하다(단일스레드 밖에 방법이 없음)
            - 고속 V8 엔진
    * 왜 Node.js를...
        - T 학습법
            - 지금 하고 있는 것도 제대로 못하고 있는데...
            - 가로 : 그런게 있다, 어떻게 돌아간다는 파악
            - 세로 : 깊게 판다.
        - polyglot : [http://en.wikipedia.org/wiki/Polyglot_(computing)](http://en.wikipedia.org/wiki/Polyglot_(computing))
            - 여러가지 말을 하는 사람?
    * Node.js 용도
        - 웹소켓 서버 : 채팅, 알림
        - 파일 업로드
    * 자바와 연동
        - Node <-> MQ(Message Queue) <-> Java
        - Node -> Java -> MQ -> Node
    * Redis를 사용한 연동
    * Node.java
        - Non-Blocking I/O (NIO) Server/Client Framework
        - Reactor Pattern!! = 비동기 이벤트 구동
        - TCP, UDP, HTTP, SSL/TLS
        - WebSocket, Protobuf, RTSP
        - Netty, 이희승
    * Netty ++ ?
        - 난 Netty를 모른다.
        - Vert.x
            - JavaScript(Java, Ruby, Groovy, Scala, clojure)
    * Vert.x 를 어떻게 쓸거야??
        - vert.x : [http://vertx.io/](http://vertx.io/)
        - Polyglot
        - Simplicity
        - Scalability
        - Concurrency
    * Node.js의 강점
        - Community & Ecosystem
        - Module
        - 자바스크립트!
        - 6월 22일, 안전판 0.6.19(개발 0.7.12)
        - 결론을 얻을 수 없는 상황이다.
* 개인의견
    * 배경지식이 없으면, 이해하기 어려운 부분이 많다.
        - Node.js 에 대해서 알고 있는 사람이 많지 않았다.
        - Node.js를 써보자고 고려해보지 않은 자바 개발자에게는 조금 무관심해질 수 있는 내용이 아니었을까?
    * 시도해봄직한 것은 'Node.js를 충분히 이해할 수 있을만큼 사용해보는 것이다.'이 아닐까?
        - '아는 만큼 보인다.'
        - 모르면 안보이고 안들린다.
            - 안보여!!
            - 안들려!!

* * * * *

### 5. 개인의견 정리

* Java 8 : 자바 변하고 있다. 그 변화에 대처하려면 미리미리 움직여라.
* Sencha.io : 리프래시 없이 앱을 개발할 수 있다. 클라우드 이야기는 못들은 것 같다. 클라우드 환경에 적합하게 앱을 개발할 수 있다...인가?
* 포스트모템 : 프로젝트를 진행하면서 쌓이는 경험을 정의하고 논의하고 기록하여 자신의 자원으로 남기는 것이 좋다.
* Node.js : 거대한 유행이 되었다. 제대로 알고 써야 한다. 나무 팰때는 도끼를, 땅을 팔 때는 삽을... 응?

마크다운 해서 보려고 했는데... 편집기 귀찮아서 못쓰겠다.... 마크다운 프로그램으로 보면 대충 깔끔하게 나오는 글이다.

카테고리 없음

내일은 개발자 공감 세미나가 있는 날이군요.

이번에 발표내용들은 마음에 드네요.

클라우드 컴퓨팅과 관련된 이야기는 여전히 내게는 멀고도 먼 이야기.

당분간이 될 수도 있고, 앞으로 계속 쭈욱 그럴수도 있고...


바쁘지도 않은데... 무엇이 문제란 말이더냐.

포스팅이 적은 이유....

게임에 미쳐서!! 공부와 개발에 미쳐야하는데...

게으름에는 장사가 없... 핑계가 좋다.


허니몬의 IT 이야기/프로그래머, '코드 엔지니어'

  저는 세상을 관찰하는 관찰자(Outsider of Outsider)가 되고 싶었는데...!!

  오늘 집에서 출발할 때는 어젯밤 내리던 비가 그치고 구름이 걷히면서 화창했는데, 강남에 도착하는 순간 구름이 끼고 바람이 불기 시작하더니 이내 눈보라까지 휘몰아치더군요. 와우. ㅡ0-)!! 더군다나 세미나 시작시간을 잘못 파악해서 12시부터 입장하는 줄 알고 서둘러 갔습니다. 12시 30분쯤 23층 회의실에 도착했었드랬죠. 실제 세미나 시작은 오후 1시부터 입장을 하고 선착순으로 24명에게 도서를 선물로 했다고 하더군요. 

  ㅠㅅ-) 세미나에서 상품으로 책을 주는 것을 언제쯤 받아볼 수 있을까요?


20120324 7차 공감세미나
장소 : 강남 교보빌딩 23층 대회의실



1. 전자정부 표준프레임워크 = 오픈소스 + 알파


    - 발표자 : 허광남(전자정부 표준프레임워크 에반젤리스트!?)


    - @Before
        = ALM
        = source_20120324.zip
        = "개발팀이 체계적이면 좋겠다."

    - 전자정부
        = 공공기관의 행정 전산화 : 중소기업의 SI 프로젝트를 통해서 중소기업의 소득이 증가하지
        = 2조 5천의 비용
        = 1억 연봉자 * 25,000명 개발자 : 서버 및 제경비가 포함된 금액

    - 표준
        = 똑똑한 개발자들이 공통(표준안)을 만들어 개발자에게 하달
            -> 개발하는 과정에서 문제가 생길 경우 이를 다시 전달

        = 개발 표준 문서
            1. 아키텍처, 코딩 스타일
            2. 공통모듈 매뉴얼, 용어사전, 에러 해결 사례(트러블 슈팅), 모범, 비행사례
            3. 2번이 추가되고 갱신이 일어나면 좋은 개발 표준이 된다.

    - 프레임워크
        = 개발 프레임워크는 정보시스템 개발을 위해
        = 필요한 기능 및 아키텍처를 미리 만들어 제공함으로써
        = 효율적인 애플리케이션 구축을 지원합니다.
        = 프레임워크 도입을 통해서 기술의 장벽을 낮출 수 있다.
            -> 비즈니스 로직 구현 <-> 아키텍쳐 구현, !고급 기술자
        = 프레임워크에 대한 표준가이드가 제대로 지도해주지 않는다면, 프레임 워크를 제대로 활용하지 못한다.
            -> 관리를 제대로 해주지 않으면 성능이나 효율이 떨어진다.
        => 프레임워크 효과
            -> "전자정부 서비스의 품질향상" 및
            -> "정보화 투자 효율성 향상"을 달성하고
            -> 대중소기업이 동.일.한 개발기반 위에서 공정경쟁
                1. 대기업에서 사용하는 별도의 프레임워크(LafJ, DevOn, Systemier 등)들이 존재한다.
        = 오픈소스를 기반으로 했기 때문에 문제가 발생했을 경우 인터넷 검색과 커뮤니티에 문의하여 해결이 가능하다.

    - 전자 정부 표준프레임워크
        = 표준프레임워크 + 민원발급 게시판 공인인증 + 행정민원시스템
    - 기본 구조
        = 개발환경
            -> 구현툴, 테스트툴, 배포툴(허드슨, 메이븐), 설정 관리툴
            -> 이클립스, 메이븐, 스프링에 익숙하면 전자정부프레임워크도 어렵지 않아요
            -> 개발 프로세스 가이드
        = 실행환경
            -> 34개의 오픈소스
            -> Configuration Management <-> Version Control Management
        = 운영환경
    - 관련 자료
        = 표준에 대한 고찰
            -> http://benelog.springnote.com/  <- 유명하신 분입니다~ +_+)
        = 지속적인 통합
            -> http://pragmaticstory.com/224
            -> 지속적인 통합을 통해서 빅뱅 통합의 여파를 줄여보자.
    - 빠른 예제 실행을 통한 동작방식 이해가 될까??
    - 전자정부 프레임워크는 통합된 개발환경을 제공해주고 예제(Template)들을 추가하여 손쉽게 구현해볼 수 있다.


허광남님은 '트렌드 기술'을 빠르게 익히고 개발자들에게 전파하는 것을 즐긴다. 전자정부 표준프레임워크는 우리나라에서 공공기관의 공통프레임워크로 만들기 위한 다양한 움직임이 있다. 

  전자정부 표준프레임워크를 활성화 시키려고 정기적으로 청계천에 있는 한국정보화진흥원 무교청사에서 세미나를 진행하고 있다. 공공기관에 적용된 표준프레임워크 성공사례에 대한 이야기들과 프레임워크 안에 들어가 있는 기술들에 대한 사용방법을 전파하려는 노력을 끊임없이 하고 있다. 개인적으로 스프링 프레임워크, jQuery 자바스크립트 프레임워크에 대한 조언을 구하려는 목적으로 사용하기에는 괜찮지 않은가 생각하고 있다. ^^;


바로가기 : http://www.egovframe.go.kr

  로그인을 하기 위해서 보안모듈을 설치해야한다는 것이 참... 거시기하다. ㅡ_-);;

  인터넷 익스플로러로  접속하면 ActiveX, 비 인터넷 익스플로러로 접속하면 Java Applet 으로 구현된 듯한 보안 모듈을 설치하려고 하고... 표준프레임워크에 대한 정보를 확인하고 의견을 나눌 수 있는 공간으로 들어가기 위해 쓸데없는 보안모듈의 관문이 생기면 진입하기 싫어진다. 오늘도 개발환경 다운로드 받으려고 했는데 계속 보안모듈을 설치하라는 메시지가 귀찮았다.


 2. 개발자와 천공수(Punch Operator, 코더?)의 차이

    - 발표자 : 신호승(유와이즈원)
    - 발표자 '쩐다.' 라는 표현을 좋아했음

    - 40시간을 50분만에 줄일 수 있을까?
    - 천공수
        = 천공수(Punch Operator) : 과거 워크스테이션을 사용했을 때 천공카드에 구멍을 뚫어주는 사람
            <-> 지금의 코딩만 하는 코더 와 크게 다르지 않다.
    - 컨설턴트 - PM - 아키텍트 - 개발자 - 천공수(BP : Business Process)
        = 비즈니스 프로세스적인 관점에서 영역을 본다라.
        = 개발을 위한 IT 목표
        = Enterprise Contents Managements
            -> 의도적이지 않은 계급화가 되었다.

    - 도메인Domain(Boundary)
    - 애자일방법론 : 기술, 문화적인 성숙도 없이 애바일 도입으로 가려고 하면서 문제가 많이 생기는 것이다.
        = ex) 도요타 : 린 애자일
    - SW 아키텍처가 필요한 이유
    - 개발자가 비즈니스 프로세스를 알아야 하는 이유
        = 우리는 평범한 사람들
            -> 공학적인 접근을 통해 공학적인 프로세스를 지켜야 한다.
            -> 미국의 학문이 정답은 아니지만, 전혀 모를 때는 닥치고 따라해보는 것이 가장 빠른 길이다.
            -> 실리콘밸리의 신입사원은 기존 문서화된 정보에서 70%의 지식을 배우고,
    - Customer Development로 부터 모든 Software 개발이 시작
        = 개발자에게 필요한 기본적인 소양
        = Customer Development <- 고객지향 개발기법 이랄까? ㅡ_-)?
    - 아키텍처 확립의 의미
        = 정리하고 산다는 의미
        = 현실을 정확하게 추상화하고 모델링하여 미래에 대한 계획과 위험에 대한 유연성 확대
        = 아키텍처를 통해 본질에 대한 파악
    - 자신이 만드는 제품에 대한 가이드 제공...
    - 요구사항 -> 변경사항 적용에 대한 공지

    - ** Agile 방법론이나 TDD등이 중요한 것이 아니라,전체적인 일하는 방법을 Agile하게 바꿔야하는 사례
    - ** 개발자도 비즈니스를 잘 알아야 한다.
    - IT는 ROI를 줄이기 위해서 필요한 것이다.
    - CMMI, Matrix
        = Level 2는 'Star'가 일을 하는 시스템
        = Level 5는 '조직' 일을 하는 시스템
    - 소프트웨어 개발은 SDLC(Software Development Life-Cycle)
        - 요구사항, 분석, 설계, 구현, 테스트
    - Software는 Intangible 하고 Human 집약적이다.
        = 80%가 사람에 대한 인력비용이 들어간다. 무조건.
        = 모델링(분석, 설계)이 필요
        = Human과 Intangible에 대한 가시성을 확보하기 위해 아키텍트가 필요
    - Agile
        = 개발자적인 Agile != Business적인 Agile
        = 애자일한 개발환경을 수행하기 위해서 천공수가 아닌 개발자가 필요
        = 높은 수준급의 개발자 역량 필요, 흔한 말로 고수가 필요하다.
        = 애자일 프로세스의 가장 중요한 Key
            1. Scope : 프로젝트에 문제가 생기면 조정가능한 것은 Scope 밖에 없다.
            2. Time/Cost
            3. Quality : 애자일하게 되면 퀄리티를 유지하면서 개발을 할 수 있...
    - 산업의 발전 : R&D -> Engineering -> Manufacturing
    - 소프트웨어 아키텍쳐
        = 아키텍처는 비전문가 고객이 쉽게 이해해서, 가슴으로 받아들일 수 있도록 설명하는 것이 가장 중요하다.
        = 아키텍쳐 평가 Architecture Evaluation
    - 미국에서 잘나가는 소프트웨어 업체에서 진행하는 소프트웨어 엔지니어링 기법을 따라가면 된다.
    - 우리나라 개발자가 잘되기 위해서는 영어공부부터...

    - 현재 수준의 내가, 어떻게 할 수 있는 수준은 아니구나....
    - Software Engineering

        = 소프트웨어공학 : 소프트웨어의 위기 해결



  소프트웨어 공학자가 바라보는 우리나라의 소프트웨어 업계에 대한 비판적인 시선을 접해볼 수 있는 기회였다. 대학교 다닐 때 '소프트웨어 공학'을 배웠다. '소프트웨어의 위기'가 도래하는 상황이 오게된다. 사람들이 가내수공업식으로 만들어내는 소프트웨어의 생산성이 수요를 감당하지 못하는 상황이 오게 되는데, 이를 해결하기 위해 공학적인 접근과 해법으로 해결해보려는 것이었다.

소프트웨어 위기의 원인은 전반적인 소프트웨어 프로세스의 복잡성과 소프트웨어 공학이 전문분야로서 상대적으로 미성숙한점에 관련되어 있다.

  • 소프트웨어 규모의 대규모화, 복잡화에 따른 개발비용 증대
  • 하드웨어 비용에 대한 소프트웨어 가격 상승폭 증가
  • 유지보수의 어려움과 개발적체 현상 발생
  • 프로젝트 개발 및 소요예산 에측의 어려움
  • 신기술에 대한 교육 및 훈련의 부족

출처 : 위키피디아 : 소프트웨어의 위기 

    개발자들은 발표자와 다른 생각을 가지고 있는 이들이 많았다. 이것은 아마 학문적인 입장에서 접근한 상황과 실무적인 입장에서 접근한 상황의 차이가 만들어낸 상황이라고 생각된다. 아키텍트보다 컨설턴트적인 입장에서 하는 이야기였다는 생각을 하게 되었다. 전에 KIPA에서 알바를 할때 'CMMI' 인증을 한 국내기업들에 대한 관리를 지원했던 적이 있었는데, 등록한 대,중,소기업이 꽤 많았었는데 정작 그들 기업은 그 수준에 미치지 못한다는 생각을 가지고 있다. 

  개발자들도 비즈니스적인 부분에 대한 관심과 이해를 가져야한다는 의견에는 공감한다.


3. 티타늄을 활용한 스마트폰 앱 개발
    - 발표자 : 방현우

    - 모바일 애플리케이션 개발방법
        1. 네이티브 앱
            = 해당 운영체제에 종속적인 애플리케이션
        2. 웹앱
            = 모바일 디바이스에 최적화되고 인터렉션이 많은 사이트
        3. 하이브리드 앱
            = 네이티브앱+웹앱의 장점을 활용한 것
            = 개발방식 : iPhone/Android 앱 개발자 + 모바일웹 개발자 협업 형태로 개발
    - 다른 하이브리드 플랫폼과의 차이점

        = 개발확장성

     - 생각 정리 :

        = 티타늄은 멀티플랫폼 개발 도구...랄까?
        = One source multi use.
하나의 소스를 개발하여 이 소스를 다양한 플랫폼에 맞춰 앱으로 개발할 수 있다.



  4. 자바 웹 개발자의 학습 로드맵
    - 발표자 : 박재성

    - 내가 기대하게 된 이유 : 나도 누군가에게 알려줘야하는 때가 오고 있어.
    - 미리미리 학습을 해두면 좋지.
    - 따라해보기
    - 기술의 홍수
    - 지속가능한 개발자
    - 로드맵

    - 시간적 여유가 있다 / 시간적 여유가 없다. -> 일단 취업이 중요하다.
    - 단기 속성 : 취업이 빠른 2012년
        = 이클립스 -> 자바 -> JSP/Servlet -> Spring + iBatis(or myBatis)
        = 취업성공 후 쌩깐다.
    - 장기 과정 : Step by Step
        1. 통합개발도구(IDE) : ****
            -> 앞과 뒤에 알아야 하는게 많다. 방법론, 개발기술, 커뮤니케이션, 도구
        2. 자바(Java, Language) : *****
            -> 근간, 기본, 기초를 너무 소홀히 하지 않는 것이 중요하다.
        3. JSP/Servlet : *****
            -> 중요도 : JSP < Servlet
            -> 데이터베이스 : **** or ***
        4. 빌드도구(Ant, Maven) : ***
            -> 나는 개인적으로는 중요하다고 생각한다.
        5. 버전관리도구(VCM, Subversion, Git) : ****
            -> 버전관리를 안하는 개발은 '하드코어'로 하는 디아블로다! 
        6. 테스트 주도 개발(TDD)과 리팩토링 : ****
            -> 잘 안되고 어려운 프로젝트
            -> 경력자, 앞단에서 리딩하는 TDD와 개발자가 성장해가면서 겪게되는 TDD는 다르다.
            -> 테스트 과정이 복잡하고 어려우면 소스수정을 하려고 하지 않는다.
            -> 빠른 피드백을 통해서 코드가 개선되는 것에 대한 희열. 초반부터 습관화 시켜야한다.
            -> 테스트 주도개발 방법론이 실패하는 이유는 그것을 익히고 습관화하는데 시간이 많이 걸리기 때문이다.
            -> UI없는 예제, 데이터베이스 없는 예제를 통해서 익혀라.
            -> TDD를 통해서 객체지향을 익힌다.
            -> UI, DB가 얽히게 되면 절차적인 프로그래밍이 된다.
            -> ** OOP의 개념을 잡아라
        7. 프론트엔드(HTML & CSS) : **
        8. JavaScript : ****
            -> JavaScript의 기본 개념을 이해해라.
            -> 자바스크립트에 대한 기본적인 이해
        9. Database 처리:
            -> 처음에 개발할 때는 Model1 방식으로 웹 개발 : 원래 해보고 그것이 가지는 장단점을 깨달아라.
            -> 프레임워크를 사용하고 기존의 방식을 뛰어넘음으로 해서 자신이 하고 있는 일에 대한 '왜Why?'를 알지 못하게 된다.
        10. OOP, Design Pattern : ***
            -> 자바코드를 더 풍부하게
            -> 쉽게 따라올 수 없는 영역, 다른 사람과 차이를 가지게 되는 부분이다.
            -> 피부로 느끼고 깨닫는 것이 중요하다. 그 때서야 시야가 넓어진다.
        11. DI(Dependency Injection) : ***
            -> 프레임워크에 대한 이해
            -> 기초가 잡혀 있어야 해.
        12. Callback Interface, Class 개념 이해 : *****
            -> 중복을 리팩토링을 통해서 해소하면서 깨닫게 되는거지
            -> 추상화에 돌입하게 된달까?
        13. RDBM, ORM : ****
            -> ORM : 학습비용이 높다. 무지 높다.
                => 솔루션, 자체 서비스 개발
                => 테이블 정규화가 자연스럽게 된다.
                => 생산성 향상이 크다.
            -> RDBM : 학습비용이 적고, 빠른 결과를 얻을 수 있다.
            -> 그러고보니 이번 프로젝트에서는 DB에 의존적인 도메인 설계를 했어.

    - 인프라 구축 및 교육
        -> 이에 대해서 관심가지고 있는 많은 사람들이 있다.
        -> 하고 싶은 일을 위해 용단을 내리신 자바지기님 멋쟁이!!


    이번 자바지기님의 발표를 들으며, '자바 개발계의 애정남'의 느낌을 받았다. 애매한 자바 초보 개발자들이 습득해야하는 기술들에 대해서 정해주는 감사한 강의였다. 지금까지는 누군가에게 모르는 것을 물으며 배워왔다. 모르는 것이 있으면 찾아보기도 하고 찾다가 없으면 물어보고 답을 얻어왔다. 이쪽에서 일한지 만 2년을 넘기고 있는 지금 내 후임으로 누군가가 들어왔을 때 그들에게 무엇인가를 알려줘야할텐데 어떻게 알려주는게 좋을까 생각하고 있었는데 그것을 정리할 수 있는 좋은 기회였다.

  얼마 전에 교보문고에 가서 개발서적을 둘러보다가 Java 언어 쪽에서 어떤 책을 읽을까 고민하는 대학생의 모습을 봤을 때, '나는 자바개발자인데, 저런 학생들에게 '이렇게 공부하면 돼.'라고 명확하게 말해줄 수 있을까?' 라는 생각을 떠올렸다. 그 때 너구리님 블로그에 올라왔던 글을 찾아봤다.

  참고 사이트 :
   - 권남 : http://kwon37xi.egloos.com/3666564
   - 너구리님 '여름으로 가는 문' : http://blog.doortts.com/93 '그림으로 보는 자바 학습 로드맵'

  모든 개발자가 같은 길을 걸어가지는 않는다. 그러나 시작하면서 홀로서기를 할 수 있는 준비를 할 수 있는 길이 있다면 큰 도움이 된다. 최근 대외활동을 하면서(난 관찰자다!! 개발자들의 모습을 지켜보고 있다.) 나름 많은 개발자들의 모습을 보면서 느낀 부분이다.

  자바 웹 개발자가 걸어야하는 길은 멀고도 멀다.

  개발을 위한 환경구축을 할 수 있는 능력(소프트웨어 아키텍트가 되기 위해 갖춰야하는 것 중 하나라 생각한다), 서버 프로그래밍, 프론트엔드 개발, 기획자와 PM과 싸울 수 있는 전투력(그들이 이해할 수 있는 표현으로 설명할 수 있는 능력, 커뮤니케이션), 자신의 생각을 구현하여 상품화할 수 있는 실천력 등 다양한 능력을 필요로 한다. 

이제는 '브로그래머(Brogrammer : 외톨이형 아닌 돈 많고 즐길 줄 아는 프로그래머)' 읭?!

Quora.com - How does a programmer become a brogrammer?

  이제 프로그래머도 내적으로 외적으로 적극적으로 왕성하게 활동해야하는 시대가 되었다. 자신의 의견을 피력하고 자신을 사람들에게 드러내야 하는 시대가 와버린 것이다. 하아... 일단 뱃살부터 줄여야지.



   


  Adobe 제품을 쓰지 않는다. 브라우징을 하는 과정에서 필요한 Flash Player를 설치한 것 이외에는 쓰지 않는다. Adobe의 웹관련 솔루션들은 이제 끝물이 아닐까? HTML5가 안착하게 되면 더욱 더 그 입지가 좁아지게 될 것이라 생각한다. 동의하지 않습니다. 죄송합니다.

  이것이 나의 세미나 참가 하면 갖추는 기본 셋팅(노트북, 노트, 펜, 음료)이 되었다. 맥북의 사용시간이 긴 편이라 들고다닌다. 가끔 낙서를 하기 위한 용도로 노트도 펼쳤다. 스마트폰의 핫스팟 기능을 통해서 인터넷 연결을 하는 편이었는데 이번 스마트폰(LGT Optimus Q2)은 데이터 통신이 안정적이지 않아서 애초에 무선인터넷을 끄고 사용한다.

 

  휘몰아치던 눈이 그치고 언제 그랬냐는 듯이 햇살이 쨍하게 내려쬔다.
  아키텍처(+아키텍트)에 대한 이야기를 들으며 남긴 낙서. SW 아키텍트를 통과점으로 생각하고 있는 내게 여러가지 생각을 갖게 만드는 발표가 있었다. ROI에 중점을 둔 아키텍트와 아키텍처 관련 내용들이 조금 혼란을 야기했다. 이 발표는 정책결정권자나 컨설턴트들이 듣기에 더 적합하지 않았나 하는 생각이 들었다. 아직은 코더에 가까운 위치에 있는 나로서는, 관심을 가지고 있는 개발기법들에 대해서 무익하다는 투의 발표는 조금 거북스러운 멶이 많았다.

  컨설턴트 <-> PM <-> 아키텍트 <-> 개발자

서로의 입장과 생각이 다르다는 것은 확실히 알았다.



뒷풀이는 순대수육!!

이번 '7차 공감세미나'에서 중요한 것은 따라하기
  이번 공감세미나를 들으면서 떠오른 것은 '따라하기' 였다. 새롭게 일을 시작하는 새내기가 가장 빠르게 일을 익힐 수 있는 방법은 '따라하기'다. 고수들이 어떻게 하는지 알아내서 그것을 따라하면서 자신에게 맞는 방법을 찾아내는 것이 가장 효과적인 학습방법이라고 생각한다.

  전자정부 표준프레임워크는 컴퍼넌트 예제를 추가하여 동작하는 원리를 쉽게 익힐 수 있다.

  소프트웨어 공학자는 '미국'의 SW기법들을 따라하라고 했다. 

  자바지기님은 자신이 익혔던 학습로드맵을 보여주시며 따라해보라고 했다.

  고수들이 나와서 자신들의 이야기를 해주는 자리가 있다면, 빠짐없이 참가해서 그들이 하는 것을 보고 듣고 느끼고 뜯고 맛보고 즐기면 되지 않을까? 아직 내가 가야하는 길은 멀고도 멀었구나 생각하게 된다. 

  나는 앞으로도 당분간은 지켜보는 자리를 지켜야겠다.



허니몬의 IT 이야기/프로그래머, '코드 엔지니어'


이번 JCO보다는 나은 것 같아.
1 2
블로그 이미지

Email : ihoneymon@gmail.com 안녕하세요, 꿀괴물 입니다. ^^ 멋진 비행을 준비 하는 블로그 입니다. 만능형 인간이 되어 많은 이들에게 인정받고, 즐겁고 행복하게 살기를 간절히 원합니다!! 달콤살벌한 꿀괴물의 좌충우돌 파란만장한 여정을 지켜봐주세요!! ^^

허니몬