Page History
...
이해시키는데 어려움에 있습니다. 오히려 비개발자가 AKKA란 단어를 알려주는게 더 잘알고 있으며 거부감이 없습니다편합니다.
새로운 개발트렌드는 분명 나의 개발경험을 부정할것이라는 추측때문이며,
저또한 지구를 침략하는 외계인으로 인식을 하였습니다.
3~4년전 분명 우리개발팀에게 SCALA와 더불어 AKKA는 외계 생명체였으며 듣보잡이였습니다.
개발 트렌드에대한 소개는 분명 기존 개발경험의 약점을 지적하고 시작해야 하기때문에
상대가 받아들이지 않으면, 불편한 논쟁이 될수 있기때문입니다.
실제로 멀티스레드를 배우고 꼭 작성을 해야 고급개발자 혹은 서비스 개발자가 된다라는 이슈까지 회기 해버리는
불편한 상황이 생겨버립니다. 액터는 그 반대의 입장에 있습니다. 복잡성을 줄이는것이야 말로 분산환경에서 유연한
개발을 할수 있는것이다라고
개인 개발팀 사례
...
이전 개발팀에서 AKKA적용스토리를 잠깐 이야기 해보겠습니다.
3~4년전 분명 C++인 우리개발팀에게 SCALA와 더불어 AKKA 플래폼 사용을 권장받았습니다.
우리 개발팀에게 이것은 지구를 침략하는 외계생명체였으며, 관련 자료도 찾기힘들었습니다.
적어도 국내에서 언급조차 안되던 시기였으니까요
JAVA진영에서 결국 팀내 JAVA진영에서 외치던 그 플래폼을 결국 C++진영에서 JAVA를배워 AKKA 서비스를 성공했으며 서비스로 작동중입니다. 가며 AKKA를 통해 기존 서비스를 바꾸자라고 진행이되었습니다.
이 과정중, 자바에서 대용량 웹소켓을 액터와 연결하고 트래픽 테스트를하고 검증하는 과정을 오히려 팀내 자바 진영에 가르키기 까지 했으며
안정적인 버젼조합에 대해 공유를 하였습니다. ( 네티 + 앱모스피어 + 액터 + 스칼라버젼 : 각 버젼별로 안정적인 조합을 찾기란 거의 헬이였습니다.)
이 과정에서 실제 이름을 대면 유명한 자바개발자 라고 소개받았지만, 큰 도움을 받지 못했습니다.
GC작동에대한 JAVA 6/7 의 차이를 오히려 C++ 개발팀 진영에서 검증하기 시작했습니다. 적어도 이때는 생명주기가 다한
메모리를 직접 메모리 해제를 해야안심이 되는 C++개발팀은 자바에서 편리하게 해주는 객체를 믿지 않았기때문입니다.
그렇게 불신으로 자바개발 플래폼을 의심하고 사용하기 시작했습니다.
대부분 자바개발자는 JVM을 믿고 잘 사용하기 때문에 이러한 문제에대해 고민하지 않는듯 보였습니다.
결과적으로는 팀내 JAVA진영에서는 서비스런칭에 성공하지 못했습니다. 제가 가진 팀에서 조직에서 일어난 아주 특수한 케이스이며 목표가 달랐기때문에
결과로 가지고 개발능력을 판단하는게 아니며, 고집스러운 C++개발자가 능동적으로 언어를 뛰어넘는 기술을 받아들이고 이해하려는
능동적인 움직임에 활동에 의미가 있습니다. 지금은 아마 C++에서도 Actor의 개념을 활용하는 라이브러리가 있을것으로
생각됩니다. - AKKA 성공사례 (국내최초라고 단언 말할수 있겠습니다.)
MS도입 사례
...
소규모 사례는 특수하기때문에 이정도로 언급을 하고, 거대 공룡 MS의 도입사례를 보겠습니다.
국내 중견개발 기업의 사례가 있으면 더 좋겠지만, 우리나라 중견 개발 기업들은 정보공유를 잘 안하기때문에 앞으로도 알수 없을듯 합니다.
또한 소규모팀이아닌 MS거대 기업이 AKKA의 개발 컨셉을 도입하고 Microsoft 네임스페이스를 포함하는것은
아주 놀라운 사실일것입니다. 더욱이 해일로 멀티플레이어에서 성공을 했다고 성공사례로 광고까지 합니다.
액터개념을 자바/MS가 공식적으로 지구에 정착할수있도록 공식 지원하기때문에
이제는 더이상 외계 생명체가 아닙니다. 이부분은 아래 내용에서 다시 언급하도록 하겠습니다.
탄생 히스토리
...
최근 몇년간 "분산환경에서 유연한 동시성 개발모델" 이라는 주제하에 이슈가 되고 있습니다.
언랭-OTP / GO언어등 직접 서비스에 녹인 성공사례가 많이 나오고 있으며, 성공사례의 이면을 살펴보면
고전전인 기존 언어및 프레임워크 그리고 고전전인 해결방법의 문제점을 철저하게 분석하고 새로운 개발 모델을 제시했다란점입니다제시하고 성공사례로 이어졌다란것입니다.
자바
자바및 MS 진영에서 우리는 우리의 방식으로 문제를 풀래라고 귀를 닫았으면 AKKA는 탄생하지 못하거나, 액터는 퍼지지못했을것입니다.
...
이때부터 각 언어들이 블록킹이 없는 비동기 프로그래밍의 장점을 홍보하기 시작합니다.
하지만 한참전에 언랭의 OTP 에서 단순한 비동기처리가 분산환경에서 문제사항으로 지적하였고 콜백지옥이없는 개선작업을 진행하였습니다.
그리고 비동기처리에서 더 추상화된 동시성 처리모델인 액터모델을 제시하였으며 , 여러가지 영향을 끼쳤습니다.
AKKA는 그러한 컨셉을 대부분 참조했다라고 보면 됩니다.
문제의 해결법은 단순합니다. 본질은 유지하고 개발 개발 복잡성을 증가를 최대한 제거하는것만이 분산환경에서
서비스를 올바르게 설계할수 있다입니다.
...
이와동시에 https://www.playframework.com/ 라는 마이크로서비스에 적합한 웹서비스도 같이 준비했습니다.
MS진영
그러면 MS진영은 어떠한 활동을 했을까요? 닷넷프레임워크가 대부분 자바의 장점을 가지고 가려고 노력을하며
...
이야기가 돌아 웹서비스로 까지 갔지만 , 다시 본론으로 돌아와
우리가 가야할길
...
어쨋건 Actor개념은 언랭에서 나왔으며, Actor모델 지원은 각 진영에서 가진 프레임워크에서 아주 중요하게 생각하고
...
아래 링크를 통해 각 진영에서 어떻게 프로젝트가 진행이 되고 있는지 정도는 파악을 하면 도움이 될듯 합니다.
언급된 링크들
...
Actor지원 개발 툴킷:
- http://akka.io/
- http://getakka.net/
- https://www.microsoft.com/en-us/research/project/orleans-virtual-actors/
...
이것이 작동되는지 확인을 위해 파이썬에서도 액터를 사용해 보았습니다. 파이썬을 처음 설치해보고 시도한것입니다.