태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.



이번에 회사를 이직하면서 몇군데 회사와 포멀하진 않지만 면접 비슷한거를 보게 되었고,  그 과정에서 느낀 점을 몇가지 적으려고 한다. 


이젠 나도 경력과 나이가 있어서 주니어 시절의 포멀한 면접을 보게 되는 경우는 별로 없는 것 같다. 


그래도 난 항상 지금은 면접 자리라는 것을 스스로에게 주입시키면서 최대한 정중하게 대응을 하려고 노력한다.  


그럼에도 불구하고 상대방의 비매너 때문에 기분을 상하게 되는 경우가 있다.


최근에 만난 가장 비매너 면접 사례는...


링크드인을 통하여 친구 신청을 했길래 수락했더니 모회사의 인사 담당자라고 하면서 연락을 취해왔다.  자신의 회사 임원급 (CXX) 구인중인데 한번만 만나달라고 읍소를 하는 것이었다. 


한참 성장중인 스타트업 기업이었고 BM 또한 나쁘지 않다고 평소 생각하던 회사여서 흔쾌히 수락을 했고,  그 회사의 대표님과도 커피숍에서 차 한잔 하는 캐주얼한 면접까지 보게 되었다. 


나한테 회사로 방문해 달라고 하진 않았지만 난 내가 가는게 예의라고 생각해서 결론적으로 난 그 회사를 총 두번(인사 담당자 면담, 대표님 면접)을 방문하게 되었다. 


대표님 면접 이후로 몇달이 지난 지금도 면접 결과에 대하여 연락을 받은게 없다. 


뭐 임원급을 뽑는데 쉽게 결정이 나지도 않을것이고 내가 맘에 않들었을 수도 있다.   


아무리 그렇더라도 최소한 결론이 났으면 어떻게 결론이 났으니 미안하다.  혹은 아직 결론이 안났으니 좀만 기다려달라라고 이야기는 해줄수 있는 것이 아닌가.


이미 현재 다른 회사에서 일을 하고 있기 때문에 결과에 크게 신경을 쓰진 않았지만, 생각해보니 괘씸하기 짝이 없다. 


아쉬울땐 오라고 읍소를 보내더니만 면접후 나몰라라 하는 회사들은 정말 비매너라고 생각한다.  시간을 내서 면접에 응해준 사람에 대한 최소한의 예의로 결과에 대한 통보 정도는 꼭 해줘야 한다고 본다. 









Posted by +쇠돌이+

댓글을 달아 주세요

에브리타운 for Kakao 프로젝트시에 아키텍처를 잡을때 NoSQL 도입을 검토했었는데 당시 CouchBase를 제외하고는 딱 이거다 싶은 솔루션은 없었던거 같다. 


물론 Redis를 캐쉬서버 및 보조 Persistence용도로 사용하긴 했지만 결국 메인 저장소는 Mysql을 사용했고 대신 Scale up을 위하여 HandlerSocket을 사용했었다.


HandlerSocket이 뭔지 궁금하신 분은 아래 링크 클릭!


https://github.com/DeNA/HandlerSocket-Plugin-for-MySQL


에브리타운 개발시에 개발 언어가 PHP이었기 때문에 Connection Poolling도 사용하지 않았고 (SQLRelay 등의 솔루션이 있긴 했지만 그닥 믿음이 가지 않아 사용하지 않음) ORM등의 사용도 하지 않은 상태였기 때문에 Handlersocket코드로 바뀌는데 크게 교체 비용이 들어가지 않았었다. 

대신 읽기가 어려운 코드가 되 버렸고 DBA의 모니터링 및 관리가 어려운 서비스가 되 버리는 단점이 있긴 했는데 그정도 단점은 충분히 커버할만큼의 성능상의 잇점이 있었다. 

Handlersocket 개발자의 벤치마크 처럼 엄청난 성능상의 잇점은 없었지만 대략 1.8배 ~ 2배 정도의 속도 향상은 있었었다. ( 그정도가 어디냐 ㅋㅋ )


현재 작업중인 새로운 게임 서버에서도 사용을 검토하고 있는데, 현재는 주 개발 언어가 java가 될것 같다. 


에브리타운 때와는 좀 다르다고 생각되는 점은 일단 java에서는 기본적으로 PHP보다 성능이 좋으므로 handlersocket 사용시와 아닐때의 차이가 크지 않을것 같고 대신 다른 단점들 - 코드 readablility ,  DBA 관리 측면 - 이 더 커지게 되는것은 아닌지 고민이 된다. 


또한 handlersocket 프로젝트가 지속적으로 업데이트 되지 않는 부분도 불안감이 더해진다.


 

 



 


Posted by +쇠돌이+

댓글을 달아 주세요



출처 : https://gist.github.com/playpauseandstop/3957836



Couchbase


In total, operations: 17538, time: 17.0281 s
Operations per second: 1030
Min: 2.1607, max: 12.1318



Memcached 


In total, operations: 16311, time: 3.3722 s
Operations per second: 4837
Min: 0.0735, max: 0.6639


Redis

In total, operations: 20013, time: 5.1346 s
Operations per second: 3898
Min: 1.1270, max: 5.1189



Redis pipelined 


In total, operations: 17610, time: 3.5362 s
Operations per second: 4980
Min: 0.8401, max: 3.5280



Redis Pipelined가 위너!!

memcached와 redis의 OPS가 의미있는 수치 만큼 차이가 난다는 것도 의외다.

실제 내가 해본 단순 GET/SET 테스트에서는 큰 차이가 없었기 떄문이다.

CouchBase의 낮은 성능 또한 의외의 결과.



Posted by +쇠돌이+

댓글을 달아 주세요

오픈소스를 활용한 분산 아키텍처 구현 기술.  Deview2013  발표 자료인듯. 


깊은 내용은 없으나 넓은 내용을 터치하고 있어서 가볍게 한번씩 읽기 적당함. 





Posted by +쇠돌이+

댓글을 달아 주세요



이미 많은 문서들이 나와있어서 자세한 설명은 생략해도 될것 같다. 


Jenkins의 유니티 플러그인이 유니티 코멘드라인 툴을 실행하게 해주고, 그것을 이용하여 APK나 App 같은  아이폰, 안드로이드 모바일에서 구동 가능한 형태로 빌드를 해줄수 있는 컨셉인데...


컨셉이 저렇다 보니 일단 유니티가 설치되어있는 서버에서만 구동이 된다. 


그리고 유니티 Pro 버전에서만 동작을 한다. 


그리고 안드로이드 SDK위치나 생성하고 싶은 안드로이드 패키지 이름 같은 빌드 셋팅이 유니티안에서 모두 잘 되어있어야 한다. 


그리고 윈도우즈에서는 결정적으로  jenkins가 실행되는 계정과 유니티가 실행되는 계정과 통일을 시켜줘야 한다.


기본적으로 SYSTEM계정으로 Jenkins가 실행이 되므로 이를 수정을 해주지 않으면 무한로딩에 빠진다. (실제론 안드로이드 SDK를 위치를 묻는 다이얼로그가 나오는 순서이다)



참고로 현재 설치된 플러그인 목록이다.





결국 핵심은  unity builder를 command line으로 실행을 시키는 것인데...




참고로 현재 우리 프로젝트에서는 이렇게 사용하고 있다.  -RuntimeArgs  꼭 필요한것은 아님.


-quit -batchmode -executeMethod CIBuildScript.PerformBuild -RuntimeArgs:server="http://192.168.0.60/" -BuildtimeArgs:target="[빌드가 저장될 경로]";apkname="[빌드 이름]";preservedays="4"



결국 세시간 삽질끝에 성공!!!






Posted by +쇠돌이+

댓글을 달아 주세요


DEView2012에 발표한 Netty Internals and Core Concepts 


Posted by +쇠돌이+

댓글을 달아 주세요

ubuntu를 이용할때는 주로 프로그램들을 설치할때 apt-get 을 이용하게 되는데, 


이게 매우 편리하긴 하지만 홈 디렉토리 셋팅까지 알아서 처리를 해버리기 때문에 이후에 환경변수 셋팅시에 홈 디렉토리를 주소를 알아내야 하는 불편함이 생긴다.


대표적인 예가 JAVA_HOME을 셋팅 등인데...


ANT가 설치되어있으면 간편하게 알아 낼 수 있는 방법이 있다. 


ant -diagnostices | grep home  


이 명령어면 ANT, JAVA의 홈디렉토리를 알수 있다. 


보통 ant의 경우는 /usr/share/ant 


java 1.7의 경우는 /usr/lib/jvm/java-7-oracle


maven의 경우는 /usr/share/maven 이다. 




Posted by +쇠돌이+

댓글을 달아 주세요



IT회사라고 제목을 붙이긴 했지만 아마 대부분 기업에 적용이 되는 이야기일 것 같다. 


어느정도 규모가 커진 회사에서 흔히 볼수 있는 현상인데, 실제 product을 만들어내는 부서보다 관리부서의 사람들의 파워(?)나 입김이 더 세지는 현상을 볼수 있다.  


아무래도 경영진을 보좌하며 일을 하다가 보니 product을 만드는 사람들 보다 더 경영진과 가까워지기 마련이고 그게 개인적인 부분에서 끝나는게 아니라 실제 보상이나 승진등에서 특혜를 입기도 하고 심지어 회사의 중요한 product의 방향을 비용과 관리의 측면에서 쥐고 흔들어서 회사의 생존에 위협이 되는 존재가 되기도 한다.   


회사가 망테크트리를 타는 주요 원인중에 하나이다.  


실제 이런 회사를 많이 봐왔다. 



회사의 혁신이 유지가 되려면 실제 제품을 만드는 부서가 일을 잘 할 수 있는 관리부서가 되어야 한다.   거기다가 철밥통 업종이 아니라 변화의 속도가 빠른 IT회사에서는 더더욱 제품을 만드는 회사를 빠르게 잘 support를 하지 않으면 살아남기가 힘들다고 본다.



Yahoo에서 일하면서 인상깊었던 것은 야후 burbank 사무실에 방문했을때 노트북이 고장나서 IT부서에 노트북 수리를 요청하러 갔다. 사무실 자체가 은행창구 같이 고객과 얼굴을 마주 보게 책상이 배치가 되어있었다는 점이 우선 인상적이었다. 


거기다가 담당 직원은 아주 친절하고 문제를 즉각적으로 해결해주었고, 수리를 받은 직후 내 회사 메일로 내 노트북 수리를 담당했던 직원에 대한 평가를 할수 있는 메일이 와있었다.


수리를 해준 직원은 친절했나요?  전문적인 지식을 갖추고 빠르게 문제를 해결해줬나요?  뭐 이런 질문들을 통하여 만족도를 평가하는 시스템이었다. 


  요새 우리나라 회사에서도 고객을 대상으로 A/S 담당 기사에 대한 평가를 고객이 직접 할수 있게 하는 시스템이 도입이 되고 있는데 이게 회사 내에서도 실행이 되고 있더란 말이다.   


그게 벌써 2000년 중반때 일이니 사내 고객에 대한 회사의 노력이 필요하다는 것을 매우 일찍 깨달았단 이야기 이다.   회사 직원들이 회사에 실망하는 직접적인 원인은 매우 멀리 있는 경영진에 대한 실망 보다는 이러한 사소한 부분에서 직접 나와 얼굴을 마주하는 회사 직원이 나를 대하는 태도에 있다는 사실을 우리나라 기업들도 깨달아야 할것 같다. 





Posted by Breeze.Kang

댓글을 달아 주세요


http://blog.rightscale.com/2007/11/13/mysql-performance-on-amazon-ec2/


Machine MySQL read-only read-write
EC2 small 5.0.22 227, 228, 230, 241 115, 116, 119
EC2 large 5.0.22 466 333
EC2 small 5.0.44 227, 229, 229 115, 115, 115
EC2 large 5.0.44 420, 428, 462 277, 310, 319
EC2 xlarge 4.5GB 5.0.44 620, 630, 637 463, 483, 495
EC2 xlarge 12GB 5.0.44 593, 598, 620 453, 481
AMD Sempron 64 5.0.22 383, 394 220, 225
iMac 5.0.?? 253 144


* 하단 두개의 AMD와 iMac은 성능 비교를 위한 자료.

좀 오래된 자료이긴 하나 성능이 어느정도인지 짐작은 가능할듯.

small 은 서비스에서 사용하기 힘들 정도로 Write 성능이 무지하게 떨어지는것을 알수 있다.

실제 서비스에서는 최소 Large 이상은 써야 할듯.

최근 나오는  mysql 5.5 버전에서의 성능은 어떠할지 궁금하다.




'프로그래머로 살아가기 > Cloud' 카테고리의 다른 글

Amazon EC2 에서 mysql의 benchmark 자료  (0) 2012.03.21
Posted by +쇠돌이+

댓글을 달아 주세요

요새 Groovy on Grails를 공부하고 있는데요, 재미있군요.

java base 에서Rails 스타일로 프로그래밍을 가능하게 해줘서 생산성을 높여주는데 촛점이 맞춰진 언어입니다.

기본적인 내용들은 자료가 많이 있으니 찾아 보시면 될 것 같구요.


오늘은 Maven을 Integration하는 방법을 정리 해보려고 합니다.


기본적인 내용은 일단 아래 링크를 참조하시구요.

http://grails.org/doc/latest/guide/4.%20The%20Command%20Line.html#4.5%20Ant%20and%20Maven

간략하게 핵심만 정리해 보도록 하겠습니다.



기본적인 컨셉은 다음과 같습니다.

1. grails maven plugin을 이용하여 프로젝트 생성
2. 프로젝트 초기화
3. maven을 이용하여 Grails controller등 생성
4. maven을 이용하여 실행


프로젝트 생성

아래 명령에서 적절한 group id와 artifact id를 지정해줍니다.

mvn archetype:generate -DarchetypeGroupId=org.grails -DarchetypeArtifactId=grails-maven-archetype -DarchetypeVersion=1.3.4 -DgroupId=com.my-group -DartifactId=my-project

명령을 수행하면 버전 정보를 묻는 창이 뜨는데,

0.0.1-SNAPSHOT 같은 적당한 버전 이름을 지정해주면 됩니다.

성공적으로 수행이 되면 pom.xml 파일이 생성되고 기본적인 프로젝트 트리가 생성됩니다.



프로젝트 초기화

생성된 프로젝트 폴더로 가서 initialize를 시킵니다. 실행하면 grails 폴더 트리들이 자동으로 생성됩니다.
cd my-project
mvn initialize



Maven을 이용하여 Grails 명령어 실행

이제부터 Grails명령어들을 이용하기 위하여서는 Maven을 사용해야 합니다.

Bbs 모델 class가 이미 존재한다고 가정하고,

컨트롤러 및 기타 생성
mvn grails:exec -Dcommand=generate-controller -Dargs=com.my-project.common.model.entity.Bbs
mvn grails:exec -Dcommand=generate-all -Dargs=com.my-project.common.model.entity.Bbs

어플리케이션 실행
mvn grails:run-app


이런식으로 실행을 하면 됩니다.


이제부터는 pom.xml 파일에 Maven repository에 있는 레거시 Jar 패키지들을 Dependency 추가해주면 그대로 사용이 가능합니다.
물론 grails 파일들 외에 기존 사용하던 Java class들도 Dependency를 추가해주면 그대로 사용이 가능합니다.










Posted by Breeze.Kang

댓글을 달아 주세요