객체 경계를 넘나드는 관심사. 영속성, 보안, 트랜잭션의 처리 방식 등이 이에 속함.
해당하는 코드에 대해 모듈성을 확보하는 방법으로 AOP(Aspect-Oriented Programming)가 있다.
특정 관심사에 대해 Aspect라는 개념의 모듈을 통해 특정 지점들이 동작하는 방식을 일관성 있게 바꾸는 방식의 프로그래밍 방법
간단한 스크립트 언어나 표준 언어로 구현한 API
도메인과 코드 사이의 '의사소통 간극'을 줄여준다.
AOP 부분을 읽으면서 어디서 많이 본 개념이라 생각했는데 Nest.js의 Interceptors 가 AOP에서 영감을 받아 만든 것이었다. Nest.js의 Interceptors는 request를 controller 앞에서 잡아 특정 작업을 진행하는 클래스인데 AOP와 유사하다.
그 외에도 POJO로 구현되는 모듈을 단위로 어플리케이션을 구성하는 방식이 Nest.js의 Entity를 중심으로 모듈을 분리하는(물론 부가적인 모듈들도 존재하지만) 방식과 유사한 것, EJB3으로 작성된 Bank class의 형태가 typeORM으로 만들어진 Entity와 비슷한점 등 여러모로 익숙하게 느껴졌다.
언어와 프레임워크에 관계 없이 이러한 방식의 개발이 대세?인가 보다.