큰 문제 있는건 아니고 실제 프로젝트에서는 흔히 사용되는 코드이긴 합니다.
하지만 학습 목적과 함께 이 정도 규모 프로젝트에서는 가급적이면 Layer 의 역할과 의존/참조 범위를 맞추는게 어려운 일은 아니라고 생각합니다.
무슨 말이냐 하면 일단...
Service 는 통신 인터페이스와는 무관한 로직을 수행하기 위한 계층입니다.
즉, Controller 에서 Http 를 활용하여 외부와 통신을 하든, Socket 통신을 통해 통신을 하든, 아니면 Import 를 해서 다른 프로젝트에서 호출하든 Service 는 영향을 받지 않아야 하는 Layer 라고 생각합니다.
그럼 Http 라는 개념은 Service 로 넘어오면 안되는 부분이고 Controller 에서 처리할 역할이라고 생각합니다.
대표적으로 httpRequest, httpReponse, 와 같은 객체는 Controller 까지가 가시 범위이며 Service 까지 넘어오면 안되는 범위일 것 같습니다.
만약 위 코드에서 Http 를 통한 통신 대신 Netty 등을 통해 Socket 통신을 하기로 바꿨다면 위 코드는 아마도 동작하지 않을거고, 그렇다면 HttpRequestUtil 를 좀 더 추상화 해서 해결 할 수도 있지만 결국 이건 통신 인터페이스에 대한 참조가 Service 까지 내려와 있기 때문에 이렇게 우회하게 되는거 같습니다.
아예 통신 인터페이스 단의 코드가 서비스로 내려오지 않는다면 훨씬 확장성 있을 것 같습니다.
확장성은 Interface를 통한 추상화만으로 이루어지는게 아니고 설계에서 나온다고 생각합니다. 오히려 Interface 는 나중에 추출해도 전혀 어렵지 않은 부분이고, 그런 부분보다는 이런 http 등의 참조 범위, Layer 의 역할과 같은 부분이 설계에서 나오는 부분이라고 생각합니다. 전 설계가 굉장히 중요하다고 생각하는 입장이라...
이것도 제 생각이긴 한데...(맨날 생각이라고 하고 내 말만 하는것 같지만...) 이것도 항상 토론하면 즐거운 주제... ㅎㅎ ㅠㅠ
https://github.com/ParkIlHoon/data-collector/blob/5e8845378441d5e1b2b6af57775a9c415684c369/src/main/java/io/hoon/datacollector/service/DataCollectorService.java#L35
큰 문제 있는건 아니고 실제 프로젝트에서는 흔히 사용되는 코드이긴 합니다. 하지만 학습 목적과 함께 이 정도 규모 프로젝트에서는 가급적이면 Layer 의 역할과 의존/참조 범위를 맞추는게 어려운 일은 아니라고 생각합니다.
무슨 말이냐 하면 일단...
Service 는 통신 인터페이스와는 무관한 로직을 수행하기 위한 계층입니다. 즉, Controller 에서 Http 를 활용하여 외부와 통신을 하든, Socket 통신을 통해 통신을 하든, 아니면 Import 를 해서 다른 프로젝트에서 호출하든 Service 는 영향을 받지 않아야 하는 Layer 라고 생각합니다.
그럼 Http 라는 개념은 Service 로 넘어오면 안되는 부분이고 Controller 에서 처리할 역할이라고 생각합니다.
대표적으로 httpRequest, httpReponse, 와 같은 객체는 Controller 까지가 가시 범위이며 Service 까지 넘어오면 안되는 범위일 것 같습니다.
만약 위 코드에서 Http 를 통한 통신 대신 Netty 등을 통해 Socket 통신을 하기로 바꿨다면 위 코드는 아마도 동작하지 않을거고, 그렇다면 HttpRequestUtil 를 좀 더 추상화 해서 해결 할 수도 있지만 결국 이건 통신 인터페이스에 대한 참조가 Service 까지 내려와 있기 때문에 이렇게 우회하게 되는거 같습니다.
아예 통신 인터페이스 단의 코드가 서비스로 내려오지 않는다면 훨씬 확장성 있을 것 같습니다.
확장성은 Interface를 통한 추상화만으로 이루어지는게 아니고 설계에서 나온다고 생각합니다. 오히려 Interface 는 나중에 추출해도 전혀 어렵지 않은 부분이고, 그런 부분보다는 이런 http 등의 참조 범위, Layer 의 역할과 같은 부분이 설계에서 나오는 부분이라고 생각합니다. 전 설계가 굉장히 중요하다고 생각하는 입장이라...
이것도 제 생각이긴 한데...(맨날 생각이라고 하고 내 말만 하는것 같지만...) 이것도 항상 토론하면 즐거운 주제... ㅎㅎ ㅠㅠ