2013년 10월 12일 토요일

Prepare Service in Erlang


모두 Erlang으로 된 프로젝트를 지난 2개월여 준비했다.

사실은 기존의 C++,MySQL로 된 대형 프로젝트를 포팅해서 클라우드로 옮기는 문제였다.

혼자서 하려니, 생산성 좋은 언어를 선택해야 했다.
게다가, 클라우드에서 자리탓하지 않는 언어와 데이터베이스를 선택해야 했고,
대용량 서비스는 안정적으로 서비스 할 수 있게 준비를 해야했다.

2개월여 동안 4만5천라인 정도의 Erlang Code를 생산했다. 데이터베이스는 Riak을 선택했다.
아직, 테스트가 많이 안 된 상태이다.

그렇지만, 효율적으로 일하기 위해서 나는 이렇게 일한다.
1. 대략적 분석 : 철저한 분석보다 시간대비 효율이 높다. 대강 기존 코드를 훑어보면 어떤 구조로 되어 있고, 어떤 의도와 목적을 이루려는지 알 수 있다. 대개의 경우 눈에 들어오지 않는 부분은 우선순위가 낮은 부분이다.
2. 초벌 코딩 : 테스트 없이 코드를 작성한다.
3. 초벌 테스트 : 성공적인 케이스에서 작동하는지 테스트한다. 예외적인 케이스가 너무도 많이 있을 수 있지만, 성공 시나리오를 먼저 구현하고 뼈대를 세우는 것이 더 중요하다.
4. 초벌 코드 리뷰 : 눈에 보이는 에러를 고치고, 예외 케이스를 구현하면서 테스트로 완성도를 높인다.
5. 시나리오 테스트 : 성공 케이스를 포함, 클라이언트에서 할 수 있는 모든 시나리오를 테스트 하면서 커버하지 못하는 예외 사항을 구현한다.
6. 스트레스 테스트 : 스트레스를 주는 테스터를 만들고, 크리티컬 패스를 잡고, 최적화 한다.
7. 디플로이 테스트 : 개발 환경이 아닌, 실제 서비스 환경에 적용해서 테스트 한다.
8. 유저 테스트 : 미처 잡지 못한 테스트를 한다.

앞으로 할 일은,
Erlang 코드 최적화와 Riak 최적화 일 것 같다.


2013년 7월 11일 목요일

new start

새로운 개발 환경을 구축해보고자 한다. 몇년이 걸릴지 ㅎㅎㅎ

이제 익숙해진 erlang은 서버쪽, 게임 클라이언트쪽은 unity3d.

만들어 보고 싶은 플랫폼은
haskell로 클라/서버 공통 소스를 쓰는 게임엔진을 만드는 것.
하지만 haskell 자체가 아직 익숙하지 않다.

pilot project를 정해서 수련해가며, 최종 목적지에 도달해야 할 듯.

project euler문제들이나 erlang,haskell로 구현하면 대충은 수련이 되려나...