2017-04-13 12 views
1

현재 여러 웹 서비스 및 공통 EJB 코드를 Weblogic 12c 플랫폼에서 다중으로 실행중인 Monolith Java/J2EE 기반 응용 프로그램을 리펙토링하는 전략을 개발 중입니다. MicroServices. 공통 EJB 코드에는 각 웹 서비스에 고유 한 세션 bean이 있으며 여러 서비스에서 액세스하는 공통 코드가 있습니다. 공통 EJB 코드를 리팩토링하는 최선의 방법은 무엇입니까? 내가 만났던 옵션 중 일부는모노리스 응용 프로그램을 리팩터링하는 동안 일반적인 EJB 코드를 마이크로 서비스로 리팩터링하는 방법

입니다. 공유 라이브러리로 공통 EJB 빈을 리팩터링하고이를 EAR로 배포하십시오. 여기 웹 서비스에서 빈을 조회하는 방법 (CDI는 그대로 작동하지 않습니다) 컨텍스트 외부에서 로컬 JNDI 조회 가능)

2. 일반적인 EJB bean을 JAR 파일로 패키징하고 모든 웹 서비스 APP-INF/lib 디렉토리를 포함하십시오. -이 옵션은 다양한 코드 사본을 여러 가지로 작성합니다 서비스

다른 옵션을 제안하십시오

+0

당신이 일처럼 보이는 방법의 다이어그램을 게시 할 수 있다면 ... – efekctive

+0

난 당신이 잘못된 끝에서 시작 생각합니다. 먼저 공통 코드에서 마이크로 서비스를 만들어야합니다. – efekctive

답변

0

모노리스를 여러 개의 micr oservices는 네트워크를 통해 통신하는 여러 응용 프로그램을 생성해야합니다. 따라서 마이크로 서비스의 내부는 다른 마이크로 서비스 관점에서 불투명합니다. 이 경우, 공유/공통 코드는이를 사용하는 모든 마이크로 서비스로 복사/붙여 넣기해야합니다. 이것은 디커플플을 필요로하므로 마이크로 서비스가 서로 가능하므로 은 독립적으로으로 진화 할 수 있습니다. 마이크로 서비스 아키텍처를 사용할 때의 이점 중 하나입니다. 예를 들어, 나중에 프로그래밍 언어를 Java에서 JavaScript 또는 PHP으로 변경할 수 있습니다. 아무도에이를 알립니다.

here, 33 페이지, "DRY 및 마이크로 서비스 세계에서 코드 재사용의 위험"을 읽으십시오.

+0

Constantin GALBENU 제안에 감사드립니다. 귀하가 제안한 옵션에 기대고 있었지만 응용 프로그램 서버에있는 JAR 복사본 만 보았을뿐만 아니라 모든 영향을받는 서비스를 구축하고 배포하는 단점도 있습니다. JAR에서 변경 (Weblogic은 버전 관리의 좋은 방법을 제공한다). – govephasu

0

이전 EJB를 사용하여 리팩터링하는 대신 진화 설계 방식을 사용하는 방법은 어떻습니까?

실제로 많은 마이크로 서비스 그룹은 장기간에 진화되기보다는 많은 서비스가 폐기 될 것으로 명시 적으로 기대함으로써이 점을 더 많이 이용합니다.

Guardian 웹 사이트는 모 놀리 식으로 설계 및 제작되었지만 마이크로 서비스 방향으로 진화 해 온 애플리케이션의 좋은 예입니다. 모노리스는 여전히 웹 사이트의 핵심이지만, 모노리스의 API를 사용하는 마이크로 서비스를 구축하여 새로운 기능을 추가하는 것을 선호합니다.

(From Martin Fowler)

+0

그게 좋은 지적이야. 나는 항상 진화론 적 디자인을 따라왔다. 나는 모노리스 어플리케이션을 기반으로하는 나쁜 디자인을 제공한다. 모노리스 위에 구축 된 새로운 기능은 부분적으로 코드에 종속된다. 추가 된 마이크로 서비스를 빌드하는 데 사용할 수있는 재사용 가능한 항아리로 리팩토링하는 데 많은 작업이 필요합니다. – govephasu

+0

새 코드는 아직 작성되지 않았으므로 종속성이 없습니다.원하는 코드를 결정하는 것은 당신 만의 것입니다. 다른 모든 것들은 예를 들어에 노출 된 시간 동안 모 놀리 식에 남아있을 수 있습니다. REST 인터페이스. – ytg