Versions Compared

Key

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

...

2세대 : 멀티스레드 작성의 몰락과 비동기 프로그래밍

멀티스레드 프로그래밍이아닌 동시성 처리를 위한 비동기처리를 위한 여러가지 언어스펙이 발생하게되며

콜백헬을 방지하는 여러가지 방안이 생기기 시작합니다.

...

그리고 Future 와 Promice라는 컨셉으로 완결이 되는것으로 보입니다하드웨어의 발전과 함께 단일노드에서 멀티스레드를 통한 대용량처리가 주류를 이루었으며

IOCP SOCK에서 절정을 이루었습니다. 이때 고급 개발자의 역량은 단일노드 만명동시처리를

멀티스레드의 작성을 통해 하던 시기 였습니다.

하지만 무어의 법칙에의해 하드웨어 성능의 비약적 발전은 종료되게되며, 공짜점심이 끝났다라고 표현합니다.

인터넷의 발전과함께 사용자가 늘어남과 동시에 사용자한명이 소모하는 트래픽이 늘어나게 되었으며

더이상 단일노드 멀티스레드 최적화를 통해 트래픽 커버를 할수 없게됩니다.

분산처리를 위해 복잡한 멀티스레드 개발방식은  단순화가 필요했으며 , asyn 라는 비동기 프로그래밍이

시작되었습니다.   


콜백헬이라는 몸살을 겪으며 함수형이 함께 도입되며 Future 와 Promice라는

컨셉으로 완결이 되는것으로 보이며 곧바로 함수형시대가 열리게 됩니다.



참고:

Future and Promice

3세대 : 람다와 함께 함수형 프로그래밍의 등장

...

집계 통계등을 신기방기한 방식으로 간단한 코드로 표현이 가능해졌다가능 해졌습니다. 

그리고 이것은 복잡한 비동기 처리 개발방법이 필요없어지게 되었고, 알아서 멀티코어를 활용하여

...

예를 들면 도메인 처리는 여전히 OOP가 안정적이고  분석은 함수형에 이점이 있으며  배치는 절차형이 안정적이다.

어느한가지 방식이 항상 장점이 있는것이 아닌, 각각의 특성의 장점을 이용하는것입니다.

모던한 개발에서 요구되는 사항어떠한 기준을 잡고 언어와 플랫폼을 선택할수 있어야합니다. 그리고 느리게 발전하는 메이져 언어에서도 일부 도입이 되었다란 사실입니다.


어떠한 언어나 플랫폼이 아니라, 우리 도메인에서 필요한게 무엇이고? 개발자에게 필요한 역량이 무엇인가를  정리하고 탐구하는것입니다.

이미 잘하고 있는 CRUD만 하는 방식을 최신언어 최신 플랫폼으로 변경하는것은 의미가 없으며 모던한 개발이 아니란점입니다. 

모던한 개발은 도메인 대용량 처리를위해 CQRS,이벤트소싱,클러스터처리등 언어에 상관없이 설계할수 있고 활용할수 있는것을 의미합니다.

그 과정에서 람다를 사용하고 함수형을 이용하는것은 옵션입니다.    


모던한 개발의 도전과제

  • 도메인 객체인 엔티티,Aggregate,Repository를 OOP를 통해 분리하는 방법 (OOP설계능력 향상을 통한 도메인처리)
  • 대용량 처리에서 역압력 사용을 위한 스트림의 활용과 메시지큐의 활용 ( Akka,Kafka 등등)
  • 분산처리를 위한 라우팅설계와 라우팅설계및 클러스터활용과 다른 플랫폼을 상호 연동하는 방법
  • 전통적인 예외처리를 개선하는 패러다임의 활용 ( Let it Crash By Supervisor )
  • 도커를  통한 통합 개발환경 구축과 유닛테스트 커버리지를 올릴수 있는 방안등등(도커)


5세대 : 클라우드의 발전

...

 도메인과 관련한 룰생성,API생성을 포함하여 마이크로서비스를 오케스트라를 할수 있는 방법이 이미 있으며

...

OOP가 사라지지 않듯이, 이전 개발 방식이 완전 사라지는것이 아니고 어느정도 공존이 되면서 변화가 될것이다. 


하지만 우린 지금 시대에 필요한 개발자의 지식탐구의 방향은 무엇인가? 를 고민해볼필요가 있으며

이것은 다음 주제로 이어집니다.

Next :