* 발표자 : 이용혁(ItemBay)

* Server


* Database

* 쓰던거 쓴다! MySQL, 

* 이중화 + 세션 클러스터링

* nginx + tomcat + RDB

* 추가증설에 대한 고민

* 세션클러스터링의 한계 : 클러스터링 하다가 많은 서버들이 복잡하게 연결

- 사용자가 집중되었을 때 문제가 발생할 가능성이 있다.


* 대책

* tomcat간의 세션 클러스터링 포기

* 세션 대신 쿠키 사용

* 쿠키에는 KEY값 저장

* 업무에 필요한 사용자정보는 DB저장

* DB의 집중 문제가 발생!

- 로그인 20여 만건 이상 : 성능상의 이슈가 발생

* Cache Server!!

- 세션정보를 저장

- 자주 사용되는 항목들 저장

- 물리적인 서버 추가는 힘들다.

- 기존 WAS의 남는 리소스에 띄운다.

- 여러 WAS에 분산가능해야 한다.

- Open Source

- infinispan : http://www.jboss.org/infinispan

- Transactional in memory key/value NoSQL database & Data grid

- JSR 107, JSR 347 완벽지원

- 무료!!

- etc/cluster.xml 설명

1. eviction : 자신이 실제로 데이터를 가지고 있는 수 지정

- etc/jgroups-tcp.xml : 통신 설정 정의

1. <TCP ... /> -> <MPING ... />

2. 멀티캐스트 IP를 가지고 있는 것들끼리 내부적으로 그룹화처리됨

서로 공유한다

- bin/sc01.sh

- bin/sc02.sh 

- java pom.xml

- tomcat7 과 부딪치는 것 때문에 <execution />으로 infinispan 을 제외시켜주어야 한다.

- Java : hotrod-client.properties

- 접속할 서버 리스트 : 중점적으로 접속할 서버만 설정해주면, 자동으로 연결되면서 자동처리됨

- java : Default Util

- RemoteCacheManage

- RemoteCache<Object, Object>

- java : Session Util

- java : Session Interceptor

* tomcat + was 2대 + infinispan 4대

* Cache는 메모리에 저장

* 시스템 다운시 데이터 사라짐

* 캐시 사용으로 이점이 있지만 문제 상황에 대비해야함

- Down시에는 다시 DB 사용

* 메인 DB를 사용하기에는 부담

* NoSQL 사용

* NoSQL에 대한 고심

* MongoDB, Cassandra : MongoDB 사용, 기존에 사용해왔고 내재화가 잘 되어 있음.

* 무료기술지원 : Google!!

- 무료기술지원 : www.mongodb.org

* Java  : Session Util 변경

- 캐시에서 가져와서 null인 경우 몽고DB에서 가져오면서 캐시에 등록

- 데이터 저장시 : 몽고DB에 우선 넣고 성공시 세션에 추가하도록 구현

- 분당 요청 : 3~5000, 몽고DB의 리소스 사용률은 지극히 낮다.

* RDB + MongoDB

* 이중화 + 클러스터링 되어 있어서 특정 서버가 정지하더라도 안정적인 작업이 가능

* 서버 구성 

* Nginx 1.2

* Tomcat 7

* infinispan 5

* mongoDB

* RDB

* Spring 

* 분산처리(멀티 스레드 환경 포함)에서는 static 으로 선언해주는 것이 중요하군.

* 정리

* 오픈소스 기반으로 구축

* 쉽고 빠른 확장

* 성능저하 최소

- 성능의 저하요소 : DB의 성능저하가 없는 이상 별다른 성능저하 요소가 없음

- DB 성능만 받쳐준다면 앞에 서버들은 언제나 확장 가능

* 관리이슈 증가 : 캐시서버의 상태 관리

* 담당자들의 역량 중요 : 오픈소스 사용한 프로젝트는 담당자들이 해결해야 함, 기술 내재화에 대한 장단점

- 비용은 감소, 담당자들의 역량은 강화

0123456789101112131415


최근에 유행하고 있는 기술 트랜드의 중심은 오픈소스다. 과거 엔터프라이즈와 벤더 중심에서 오픈소스로 넘어오기 시작한 것이다. 오픈소스라고 하면 공짜의 느낌을 강하게 받는 사람들이 많은데, 전혀 '공짜'가 아니다. 기술을 사용하는 것은 자유로울지 모르지만, 그 기술을 사용하기 위해서 들여야 하는 노력(오픈소스를 하면서 생길 수 있는 '오류'나 오픈소스에 있는 '결함'을 해결하거나 우회하기 위한 파악)이 필요하다. 

이런 노력은 그 기술을 도입하는 조직이 '일정 크기'이상의 규모를 지녔을 때 감쇄효과가 있다.오픈소스를 사용하기 위해 중요한 것은, 그것을 조직 내부의 것으로 만들 수 있는 내재화를 하는 것이다. 벤더의 기술을 사용할 때와는 달리, 오픈소스를 사용하면서 생기는 시행착오와 오류를 해결하는 것은 전적으로 조직 내부와 외부의 지원(오픈소스 관련 커뮤니티 활동성과도 관련이 커질 것이다) 정도에 달려있다고 본다. 이런 의미에서 보면 오픈소스를 도입하고 적용하는 것은 역시나 인적-물적 자원이 풍부한 대기업이 앞설 수밖에 없다고 본다. 최근 인력이동의 시기에 맞춰서 내가 아는 조직들 사이에 인력유출과 인력유입이 활발하게 진행되고 있다. 이런 인력유동 현상은 '오픈소스'에 대한 역량을 격동시키는 큰 요인이될 수 있을 것이라 예측해본다.

컨퍼런스에 참관하러 가서 듣고 싶은 것 중에 하나는 '새로운 시도에 대한 시행착오와 그것을 해결하기 위한 시도들에 대한 이야기'이다. 그런 의미에서 본다면 만족스런 발표였지만, 한편으로는 내가 nginx, infinispan나 mongoDB에 대한 이해나 경험이 부족한 탓에 충분히 이해하지 못하였다는 불만도 있겠다. 이 만은 결국 내 부족함에서 시작된 것이지.


생각의 탄생

저자
로버트 루트번스타인 지음
출판사
에코의서재 | 2007-05-02 출간
카테고리
인문
책소개
천재들이 활용한 창조적 사고의 13가지 도구들생각의 탄생은 분야...
가격비교 글쓴이 평점  



관찰, 형상화, 추상화, 패턴인식, 패턴형성, 유추...

창의성의 도구가 되는 생각도구들은 프로그래밍에서 말하는 것과 크게 다르지 않다.

개발요구사항을 개발자가 생각하고 그 문제를 해결하기 위한 방법을 '언어'로 번역(코딩 혹은 구현)하기 위한  도구와 생각도구가 통하는 것들이 있어 흥미를 느끼며 읽어간다.

잠은 쉬이 오질 않는구나.

git 간편 안내서 : http://rogerdudler.github.com/git-guide/index.ko.html

  깃헙Github(https://github.com)을 사용하기 전에 고려했던 원격 저장소 중에 비트버킷bitbucket(https://bitbucket.org/)이 있었다. git과 mercurial 로 사용가능한 저장소Repository를 제공하는 곳이었는데, 깃헙과 비트버킷을 고르던 중에 무슨 이유에서 깃헙을 선택했는지는 기억나질 않는다(요즘 스쳐지나가는 기억은 어디 적어두질 않으면 기억이 잘 안난다 orz...).

혼자 가지고 노는 프로젝트를 저장해둘 비공개 저장소를 떠올리다가 비트버킷을 떠올렸다. 깃헙에서는 비공개 저장소를 사용하려면 유료결제를 해야하는데 당장은 돈을 투자해서 유지할 필요가 없기 때문에 비트버킷을 선택했다.

비트버킷은 처음 가입하면 1개의 그룹에서 5명이 협업가능하다. 그런데 이메일을 이용해서 초대장invitation을 보내고, 이메일을 통해 가입하면 3명이 더 추가된다.

비트버킷을 둘러보자.




가입하는 절차는 무척 간소하다. 우리나라처럼 주민등록번호, 사는 곳, 전화번호를 적을 필요가 없다. 이메일주소 하나면 된다.

혹은 구글, 페이스북, 트위터, 깃헙을 통한 가입도 가능하다.

구글 계정으로 통일하고 있는 상황이니, 구글 계정을 가지고 가입했다.

SSH키를 통해서 인증등록을 마쳤다.

SSH키 생성하기(리눅스, 맥) : https://help.github.com/articles/generating-ssh-keys

- 윈도우 사용자 : https://confluence.atlassian.com/display/BITBUCKET/How+to+install+a+public+key+on+your+bitbucket+account

위의 내용을 따라서 ssh 키를 자신의 안에 생성하고 등록하면 된다.

인증절차를 등록하고 나면 아래와 같이 환영하는 페이지가 뜬다.

'아직 이메일을 통한 인증절차를 마치지 않았다'라는 알림Notification이 뜨는 것을 확인할 수 있다. 이메일로 날아온 인증을 마치면 알림이 사라진다.

계정 정보를 살짝 추가한다. 구글에 연계된 GraAvata 서비스를 통해서 프로필을 가져와서 자동 등록한다.

기존에 가지고 있는 외부 저장소에서 코드를 가져올 수도 있다.

새로운 저장소를 생성할수 있다.

git 형태로 새로운 repository를 추가했다.

저장소를 만들고 난 후 화면

honeymon이라고 하는 사용자명username을 누군가가 사용하고 있다. Orz... 2013년부터 새로운 허니몬으로 거듭나겠다는 다짐(오래가야하는데!)을 하면서 만든 new_를 붙혀두었다.


사용하면서 알게 되거나 기록해둘 필요가 있는 것들은 추가적으로 등록하겠다.

개발과 관련된 컨퍼런스들이 정기적으로 열리고 있다.

국내에서 주최되는 대형 개발관련 컨퍼런스
    •    JCO : http://jco.zdnet.co.kr
    •    Deview : http://deview.kr
    •    Devon : http://devon.daum.net
    •    H3 : http://h3.kthcorp.com
    •    SK Planet X : http://www.techplanet.kr

  그 중에 JCO는 현재까지 12회 개최된 오랜 역사를 가지고 있는 컨퍼런스다.




이번 JCO(제 13회)에는 약간의 불만이 생겼다.

  요즘 개발 컨퍼런스들이 ’각 분야별 트랙을 구성하여 그 안에서 분야에 대한 발표들을 배치하는 추세’인데 이번 JCO(제 13회)는 프로그램 구성이 뒤섞여 있는 중에 듣고 싶은 것들이 동시간 대에 몰려있어 아쉬움이 많다.

작년 개발 관련 컨퍼런스 프로그램
    •    2012 JCO 프로그램 : http://jco.zdnet.co.kr/12th/program.html?tr=51
    •    2012 Deview 프로그램 : http://deview.kr/2012/xe/index.php?module=timetable&act=dispTimetableTimetable
    •    2012 Devon 프로그램 : http://devon.daum.net/2012/all#.URdSsehFz-k
    •    2012 H3 프로그램 : http://h3.kthcorp.com/2012/schedule/
    •    2012 Planet X 프로그램 : http://www.techplanet.kr/program.html
        ◦    트랙 2개

  발표가 ’트랙별’로 구성이 되어 있으면, 내가 관심있는 트랙을 선택하여 그 트랙 안의 세션들을 집중 청취(자리 이동에 대한 부담감이 줄어든다)하거나 트랙을 오고가면서 세션들을 자신의 취햐에 맞춰서 선택하고 청취할 수 있는 선택의 자유를 얻을 수 있다.

    •    제 13회 JCO 프로그램 : http://jco.zdnet.co.kr/program.html

  제 13회 JCO의 프로그램은 프로그램 구성이 무작위적으로 구성(주최측에서 어떤 기준을 가지고 세션들을 나열했는지는 나로서는 알 수가 없다)되어 있어 들을만한 프로그램이 동시간대에 진행이 되는 느낌이 강하다(발표 주제들에 대한 개인적인 생각으로 나만 그렇게 느끼는 것인지도 모르겠다).


  이번에 발표세션들이 중구난방식으로 구성이 되어 있어서 세션 이동 동선을 잡기가 많이 애매하다. 개발 관련 분야들을 트랙으로 구분짓고 그 트랙에 따라 발표 주제에 따라 진행하거나 발표 주제에 대한 청취자 예측으로 청취자가 어느 발표에 몰릴지를 예측해서 분산배치를 했으면 어땠을까 하는데 말이다(발표 주제에 따라서 개발자들의 선호도가 많이 달라진다).


  작년에 참가비가 1만원에서, 올해 2만원이다. 1~2만원의 참가비야 아까울 것은 없다. ’돈을 내야 돈 아까운 줄 알고 마구잡이식으로 참가신청 안하고 신청한 돈이 아까워서 참석률이 높아진다’라고 생각한다. 고급 기술들을 전달해주는 자바 개발관련 유료 컨퍼런스가 될 것으로 짐작해볼 수가 있는데, 과연 이번 JCO 컨퍼런스가 그런 기대를 충족시켜줄 수 있을지는 두고봐야겠다.


  개발자들 사이에서는 '구글링(Googling? 구글에서 검색한다!)'을 통해 개발의 어려운 점들을 해결하는 것이 너무나 익숙하게 되어 있다. 나 역시 개발을 하다가 모르거나 해결하기 난해한 부분들이 있으면 구글에서 검색을 하여 문제들을 해결한 경험이 많다. 예전에 인터넷 초창기에는 개발자들이 두꺼운 프로그래밍 스펙 기술서를 보고서 그 안에서 스스로 해결했던 것에 비해서, 요즘은 인터넷 검색(주요 출처 : 구글 검색, stackoverflow, 누군가의 블로그)을 통해서 문제를 해결하게 된다.

  구글 코리아에서는 국내 개발자들과 소통하고 교류할 수 있는 이런저런 행사들을 많이 주최하고 있다. 지난 해 말에 진행했던 '구글 핵페어'에 참여해서 좋은 경험을 하기도 했고, 구글은 개발자들에게 좋은 이미지로 각인되고 있다고 생각한다.

난 지금 구글 핵페어(Hackfair) 참여중.

  그런 구글에서 [Google Developers Korea, http://googledevkr.blogspot.kr]를 홍보해달라고 해서, 흥쾌히 내 블로그에도 그 기록을 남긴다.

   홍보글을 올리고 그 정보를 알려주면, 추첨을 통해 상품도 준다고 하니 관심이 있는 사람은 참여를 해보면 어떨까!?

   궈궈!!


http://googledevkr.blogspot.kr/2013/02/promote-googledevkr-blog.html


+ Recent posts