Versions Compared

Key

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

...

Code Block
languagec#
themeEmacs
List<Person> persons = new List<Person>()
{
    new Person { PersonId = 1, car = "Ferrari" },
    new Person { PersonId = 1, car = "BMW" },
    new Person { PersonId = 2, car = "Audi"}
};


List<Result> results2 = persons
    .GroupBy(p => p.PersonId, 
             (k, c) => new Result()
                     {
                         PersonId = k,
                         Cars = c.Select(cs => cs.car).ToList()
                     }
            ).ToList();

이러한 코드를 사용하는것이  고급개발자인것처럼 포장되는경우도 있다.

이것이 지원되지 않는 언어는 구닥다리 언어인것처럼 배척하기도한다.

더 본질적이고 중요한 가치에대해 이야기를 하고 선택을 해야할것이다.

예를 들면 빅데이터를 빠르게 분석하기위해 Spark+Scala(Python) 를 선택했을때

얻는 이점과 기존 플랫폼과의 연동방안등이다. 


스칼라의 WordCount는 함수형 프로그래밍을 통해 데이터의 집계처리를 단순화한 좋은 예이다.

...

4세대 : 1~3세대의 장점을  잘 융합하는 마이크로서비스의 시대

최근에는 단순하게 언어가 지원하느냐 아니냐가 아닌

...


다양한 최근에는 다양한 마이크로  서비스를 통해 분산처리되고 관리가 되는 어플리케이션 구성에 고민을 하고 있으며

시대에따라 달라 질수도 있지만 그러한 관점에서 모던한 개발에서 필요한것이 무엇인가? 를 정의를 할필요가 있다고 봅니다.

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

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


모던한 개발에서 요구되는 사항

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

...