Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

  AKKA 는 복잡한 분산개발환경에서,어렵게 개발했던것을 단순화해 드립니다라고 광고를 합니다.

 최근에 AKKA자체의 장점을 주위 사람에게 소개해주고 떠들고 있습니다.

그런데 비개발자에게  AKKA란 단어를 설명해 주는게 더 편하더군요

새로운 개발 트렌드에대한 소개는 분명 기존 개발경험의 약점을 지적하고 시작해야 하기때문에

자칫 우월주의에 빠질수 있으며, 불편한 논쟁이 될수 있기때문입니다.  

실제로 액터를 설명하다가 자유로운 멀티스레드 구현및 작성을 통해 실무에 사용하고 적용해야된다란

이슈까지 회기 해버리는 불편한 상황이 생겨버립니다.

액터는 그 반대의 입장에 있습니다. 복잡성은 모두 방해요소로 측정하고 앲앤상태로 시작해 나가는 것이 출발점이기때문입니다.

하지만, 그 복잡성을 줄이는 것에대해 설명하기위해서는 여러가지 구체적인 예시가 뒤따라야하고

더 추상적인 요소에대한 설명도 필요하며, 같은 의미로 동의를 구해내기도 어렵습니다.

개발자의 기존 개발 습관을 바꾸기도 어렵습니다.

전통적인 개발방법과 그것을 개선할수 있는 방법 솔직히 저도 다 이해가 안되며 아직 내공이 부족한듯 보입니다.

그냥 혼자 연구하기엔 아깝고 외로웠을지도 모르겠습니다. 

(이 주제와 유사한 것에 관심있는분 여기에 공간을 만들수있고 문서를 가져갈수있는 권한을 드립니다. 문의처: psmon@live.co.kr ) 

하지만 AKKA를 배우면서 느낀것은 그것이였습니다.

저의 전통적이 개발방식을 꼬집고 설명하고 구체적인 예를 들면서 저의 개발 습관을 바꾸려고 드는것입니다.

그런데 한참 학습하다보니 중요한 사실을 뒤늦게 깨닫게 됩니다.  분산 개발환경속에서 그것을 이용하고 흉내내는 개발을 하였지만 

진정 분산 개발환경을 직접 설계하고 구성하고 확장을 하는 개발을 해본적이 없다란 것입니다.

애시당초 AKKA와 대화할 준비가 안되어있는 상태였습니다. 하지만 AKKA는 친절하게 그러한 분산환경에서 필요한 백그라운드 지식에대해

한참을 설명을 합니다. 오히려 이것에 대해 이해를 시키기위해 코드보다 더 많은 설명을 합니다.

그리고 그것은 AKKA종속적이지않는 분산 개발환경에서 공통적으로 알아야하고 풀어야하는 모델을 제시해시해주며

Akka와 유사한 목적을 가진 다른 플랫폼, 공통적으로 Reactive라는 단어를 공통적으로 언급합니다.

다른 플랫폼에서도 분산처리를 위해 필요한것에대한 코어 컨셉설명을 똑같은 전개로 이야기를 하고 있습니다.

AKKA를 배우고 나면  분산개발환경에서 액터모델 도입이 우리랑 맞지도 않고 해야할필요도 없다란

결론을 낼수도 있습니다.  하지만 그 결정에 도달했을때 고전적인 개발방법의 한계와

분산처리 시스템에서 필요한 개발 컨셉을 배울것으로 기대해봅니다.


  AKKA 도입 여부 결정은 뒤로  미루고   AKKA 도입여부결정은 뒤로 한참 미루고  단지 제가 팀내에서 경험한 사소한 이야기와

메이져에서는 어떠한 일들이 벌어지고 있는지 간단하게 소개하려고 합니다.

경험없이 떠들고, 다른사람의 경험을 폄하하는 그러한 개발자가 안되기를 다짐해봅니다.

필자의 개발팀에서의 적용사례

...


이전 개발팀에서 AKKA적용스토리를 잠깐 이야기 해보겠습니다.

...

- AKKA 성공사례 (개발범주에서 국내 최초라고 단언 말할수 있겠습니다만 의미 없습니다. 성공사례보다는 최초 적용사례가 맞을지도 모르겠습니다.)


MS도입 사례

...


소규모 사례는 특수하기때문에 이정도로 언급을 하고,  거대 공룡 MS의 도입사례를 보겠습니다.

...

MS거대 기업이  AKKA의 개발 컨셉을 도입하고 Microsoft 네임스페이스를 네임스페이스에 포함하는것은

아주 놀라운 사실이며, 오랫동안 닷넷 개발을 해온 개발자들도 알고 있지 않더군요

...

이부분은 아래 내용에서 다시 언급하도록 하겠습니다.


탄생 히스토리

...


최근 몇년간  "분산환경에서 유연한  동시성 개발모델" 이라는 주제하에 이슈가 되고 있습니다.

...

고전 적인 기존 해결방법의 문제점은 대부분 위와같은 상황이 됩니다 


자바

 자바및 MS 진영에서 우리는 우리의 방식으로 문제를 풀래라고 귀를 닫았으면  AKKA는 탄생하지 못하거나, 액터는 퍼지지못했을것입니다.

다른곳에 귀를 기울이고, 우리가 해결하려고 했던 고전적 방식에 방식의 한계를 느끼고  늦게나마 다른언어에서 좋은 개발모델을 도입하려는 시도를하였으며

...

이때부터 각 언어들이 블록킹이 없는 비동기 프로그래밍의 장점을 홍보하기 시작합니다. 하지만 그기간은 그리 길지 못했습니다.

Lock헬에서 벗어나니, 콜백헬이 우리를 기다리고 있었습니다.


 이보다 더 한참전에 언랭-OTP 에서 단순한 비동기처리가 분산환경에서 문제사항으로 지적하였고 콜백지옥이없는

...

문제의 해결법은 단순합니다.  복잡성을 최대한 제거하는것만이 분산환경에서  서비스를 올바르게 설계할수 있다입니다. 

왜냐? 분산처리는 그 자체만으로 복잡하기때문에 개발방법을 단순화할 필요가 있습니다.


또한 기존 솔리드형태의 웹서비스는 분산환경 즉 AKKA와 어울리기 어려운 웹환경으로 판단하고

이와 동시에  https://www.playframework.com/ 라는  마이크로서비스에 적합한 웹서비스도 같이 준비했습니다.


MS진영

 그러면 MS진영은 어떠한 활동을 했을까요? 닷넷프레임워크가 대부분 자바의 장점을 가지고 가려고 노력을하며

...

 http://owin.org/  라는 오픈형 웹서비스를  MS가 지원하고  닷넷프레임워크에 공식적으로 녹였습니다. 이과정에서 개발팀을

샀는지 금전적 개발 지원을 하는지는 모르겠습니다.

owin 오픈프로젝트는 별개로 진행되고 있으며,  asp.net 개발자도 잘모르더군요  

microsoft.iis.host 같은 IIS종속적인 호스팅 네임스페이스를 내부적으로개선하고 있지만

닷넷 개발자도, asp.net에서도 기본 사용되는 호스팅이 더이상 iis.host가 아니고 오픈소스에서 기원했다란 사실을 인지하는

사람은 잘 없더군요...., asp.net이 리눅스에 돌게끔 이전부터 준비를 해온듯 합니다.vs 2015부터  asp.net 프로젝트 생성하면 기본으로  owin.host 기반으로 웹서비스가 작동중인 사실을  

owin.host의 탄생배경은 윈도우/IIS탈출을 통한 마이크로 웹서비스 지향에 있으며 오픈프로젝트로 시작한 네임스페이스입니다., 

MS에서도 실제로는 이제 iis종속적인 호스팅의 웹호스팅의 한계를 느끼고 여기에 더 많은 지원이 이루어지고 있습니다.

...

이야기가 돌아 웹서비스 까지 갔지만 , 다시 본론으로 돌아가겠습니다.


우리가 가야할길

...


어쨋건 Actor개념은 언랭에서 나왔으며, Actor모델 지원은 각 진영에서 가진 프레임워크에서 아주 중요하게 생각하고

...

클라우드의 어떠한 원클릭서비스가 직접 개발한것보다 분산환경에서 더 좋은 서비스를 줄것이며 앞으로도 계속줄려고 노력할것이며

우리의 개발 영역을 침공을 하려할것입니다.  하지만 우리가 그러한 클라우드 서비스를 만들수 있는 기회가 제공되어진다면 또한 그것을 잘 연동해서 사용하는것 조차, 어떠한 스트리밍 모델이 필요한것의 자각이 필요합니다. 그것을 잘 사용하는 방법도  실시간-스트리밍 방식이여야 할것입니다.. 


그것을 자각하지 않는다면 우리는 이제 데브옵스에게 분산환경 설계에있어서 메인키를 뺏기게 될지도 모릅니다.

...

벗어나지 않으려고 할테니까요...(그것이 잘못되었다란 의미가 아니고, 그것만을 통해 해결을 하려는것을 의미합니다.)  

이런의미에서 기회를 놓치면 안된다고 생각한것입니다.


객체 지향을 거쳐 비동기프로그래밍에 이은  액터프로그래밍은 새로운 개발 패러다임이 되지 않을까? 추측해보며

...

내가 위치한곳은 어디며? 필요한것이 무엇인지 파악을 하는데 도움이 되었으면 좋겠습니다.

...

링크들

...


Actor지원 개발 툴킷: 자바,닷넷진영

...

이것이 작동되는지 확인을 위해 파이썬에서도 액터를 사용해 보았습니다. 팀에서 파이썬 사용할 일이 생길거같아 파이썬을 처음 설치해보고 시도한것입니다.


.net환경에서 AKKA 사용하기 : 개인적으로 문서화 진행중입니다.