기능을 캐스케이드하면 안 되는 이유
그래서 여기 내가 한 일이 있습니다.
저는 PDF 파일에서 얼굴이 있는 이미지를 추출해야 하는 마이크로서비스를 작업하고 있었습니다. 나는 Symfony를 사용했고 그들의 역할을 담당하는 몇 가지 서비스를 만들었습니다. 예: ImageExtractionService
또는 FaceDetectionService
.
일부 오픈 소스 서비스를 사용하여 사진에서 얼굴을 감지하고 PDF 파일에서 이미지를 추출하는 데 사용할 프로그램을 선택하면서 코드 재사용 가능성과 전반적인 코드 품질에 대해 미리 생각하는 것을 잊고 완성된 프로젝트가 꽤 자랑스러웠습니다.
문제
서비스 간에 기능을 계단식으로 배열했습니다. 다음과 같이 생겼습니다.
//ImageExtractionService
$this->faceDetactionService->detect()
//FaceDetectionService
function detect() {
//some code
$this->imageService->process()
}
//ImageService
function process() {
//some code
$this->cleanupService->cleanUp()
}
이와 같이 연결하면 원하지 않는 연결을 만들게 됩니다. 예를 들어 FaceDetectionService가 "본"항목에만 관심이 있는 경우 해당 데이터를 반환하지 않고 즉시 이미지를 처리하려고 시도하기 때문에 해당 데이터를 얻을 수 없습니다.
어떻게 내 엉덩이를 물게 되었습니까?
글쎄요, 기능이 프로덕션에 들어간 지 며칠 후에 서비스 디버그 옵션이 필요하다는 것을 알았습니다. 하지만 내 코드는 연결되어 있고 PDF를 다운로드하기 위한 링크가 필요하고 이미지를 업로드할 링크가 필요하기 때문에 서비스를 진정으로 분리하지 않는 한 로컬 디버그를 만들 수 없었습니다.
그래서... 하지마! 별도 서비스의 기능을 연결하지 마십시오.
향후 게시물 작성을 지원하고 싶다면 커피 한 잔 사주세요.
Reference
이 문제에 관하여(기능을 캐스케이드하면 안 되는 이유), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/kristijankanalas/don-t-cascade-functionality-4mp8
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
서비스 간에 기능을 계단식으로 배열했습니다. 다음과 같이 생겼습니다.
//ImageExtractionService
$this->faceDetactionService->detect()
//FaceDetectionService
function detect() {
//some code
$this->imageService->process()
}
//ImageService
function process() {
//some code
$this->cleanupService->cleanUp()
}
이와 같이 연결하면 원하지 않는 연결을 만들게 됩니다. 예를 들어 FaceDetectionService가 "본"항목에만 관심이 있는 경우 해당 데이터를 반환하지 않고 즉시 이미지를 처리하려고 시도하기 때문에 해당 데이터를 얻을 수 없습니다.
어떻게 내 엉덩이를 물게 되었습니까?
글쎄요, 기능이 프로덕션에 들어간 지 며칠 후에 서비스 디버그 옵션이 필요하다는 것을 알았습니다. 하지만 내 코드는 연결되어 있고 PDF를 다운로드하기 위한 링크가 필요하고 이미지를 업로드할 링크가 필요하기 때문에 서비스를 진정으로 분리하지 않는 한 로컬 디버그를 만들 수 없었습니다.
그래서... 하지마! 별도 서비스의 기능을 연결하지 마십시오.
향후 게시물 작성을 지원하고 싶다면 커피 한 잔 사주세요.
Reference
이 문제에 관하여(기능을 캐스케이드하면 안 되는 이유), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/kristijankanalas/don-t-cascade-functionality-4mp8
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
향후 게시물 작성을 지원하고 싶다면 커피 한 잔 사주세요.
Reference
이 문제에 관하여(기능을 캐스케이드하면 안 되는 이유), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/kristijankanalas/don-t-cascade-functionality-4mp8텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)