
구현 기술에 덜 의존하는 서비스 코드 만들기 (feat. 인터페이스 분리 원칙)
·
spring
최근 내부 타 부서에 CSV 파일을 생성하고 이를 제공하는 기능을 만들어야 하는 일이 생겼습니다. 이 과정에서 두 가지 접근 방식을 떠올릴 수 있었습니다.서버 로컬 파일 시스템에 임시 파일을 생성한 뒤 다운로드할 수 있도록 제공한다.S3 같은 외부 스토리지에 업로드하고, 링크(URL)를 발급해 제공한다.어떤 방식을 택하든 특정 기술에 종속적으로 코드를 작성한다면 확장성과 유연성이 떨어질 것 입니다.실제로 요구사항에 따라 두 방식을 모두 구현하게 되면서, 처음에는 서버 파일 시스템을 사용했다가 이후 S3 같은 외부 스토리지로 전환하면서 많은 수정 작업을 겪기도 했습니다. 이런 시행착오를 줄이고 기술 변경에 유연하게 대처하려면, 구체적인 구현 기술에 종속되지 않는 추상화된 인터페이스 설계가 필요합니다.이번 ..