성능을 이유로 껍데기는 자바로, 내부는 c/c++ 로 개발한 적이 있었다. 성능 이슈가 있는 것들을 native로 내려서 개발을 했는데. 결국은 아주 안정화하는데, 상당히 많은 시간을 보내야 했다.
 

처음에는 성능때문에 썼지만, 시간이 지나면서 장점보다는 단점이 더 많아지게 된다. 자바 개발바보다  c/c++ 개발자가 뽑기 힘들다. OS 가 바뀌면 골치아파진다. 만약 OS 버전이 추가되면 그에 맞춰 따로 개발되어질 수도 있다.
특히 메모리릭의 경우는 되게 어려운 상황까지 이어가게 할 수 있다. 
결국 문제가 발생된다는 것은 인건비가 나간다는 것이니.. 머리를 잘 굴려야 한다.
 

따라서, 적절하게 분리할 필요가 있다고 생각한다.

내가 생각하는 jni 코드를 하고 싶다면, 다음의 절차를 따라라..


1. jni 코드가 정말 필요한가? jni만이 해결방법인가? 대안이 있다면, jni를 쓰지 않느다. 성능보다는 유지보수성이다.
  jni 코드를 사용하면서 생기는 문제를 최소화하려면 차라리 쓰지를 말라. java lib으로 해결할 수 있게 하자

2. 반드시 써야 할 상황이면, jna는 대안이 되는가? jna (http://jna.java.net/)을 이용해서 최대한 문제가 덜 나게 하자.

3. 최악의 방법으로 jni를 사용한다.
(1) 정적 테스트, 메모리릭 테스트를 반드시 실시한다.
(2) java와 같이 쓰지 않는 아키텍처를 구성한다.
  php 웹 서버에 c++ 코드를 바인딩시켜 따로 웹을 구성한다. 이렇게 해서 적절히 분리시킨다. 
  문제의 원인을 한 서버에 두지 않게 한다.
(3) 최악의 수단으로 java와 jni를 사용한다..
   문제가 생기면, 할 수 없다...
소스 보면서 문제 파악한다..


Posted by 김용환 '김용환'

댓글을 달아 주세요