Back-end/TIL
-
[SpringBatch] 적용 예시, 구성 방안 간단 정리Back-end/TIL 2022. 4. 26. 09:31
스타트업 백엔드 인턴 업무 중 필요했던 스프링 배치에 대해 알게된 내용을 정리하는 글 입니다. 📌 배치 작업 적용 예시 예시1) 회원 탈퇴 상황 - 회원 탈퇴를 클릭했는데, 해당 회원과 관련된 데이터를 모두 삭제하려면 시간이 오래 걸리고, 삭제하면 안되는 데이터가 존재할 수 있기 때문에 회원 탈퇴 요청을 했을 때 주로 flag로 처리만 해두고 실제 데이터를 삭제하지는 않는다. 처리 - 정해진 날짜 이후에 배치로 자동 삭제되도록 한다. 예시2) 회원가입용 주민등록증 사본, 사업자등록증 사본 삭제 상황 - 회원가입 시 사용자가 등록한 위의 2가지 사진은 승인 후 바로 삭제하지 않고(사용자가 데이터 변경 요청을 할 수 있으니까) AWS S3에 저장해둔다. 처리 - 정해진 날짜 이후에 배치로 자동 삭제되도록 한..
-
Spring 개방 폐쇄의 원칙을 반영한 코드 리팩토링Back-end/TIL 2022. 4. 25. 09:26
📌 상황 팀장님께서 리팩토링한 코드를 보고 인터페이스 구현체를 명시해주는 것에 대해 고민하며 ‘Spring의 개방 폐쇄 원칙’ 개념에 대해 직접적인 이해를 하게 되었다. 현재 회사 코드는 위와 같은 구조를 가지고 있고, 지금은 SmsExternalService 인터페이스의 구현체가 SmsNaverService 뿐이지만, 만약 다른 구현체가 생긴다면, SpringBoot가 어떤 구현체를 사용해야할 지 몰라 에러가 발생할 것이다. 따라서 이러한 부분에 대한 리팩토링이 추가로 필요하다고 생각했다. 📌 개선 @RestController public class UserV2Controller { private SmsExternalService smsExternalService; @PostMapping(..) pub..
-
JPA의 Cross Join 개선하기Back-end/TIL 2022. 4. 20. 09:29
📌 상황 아래 예시 코드에서 PharmacyEmployee 엔티티는 Pharamcy, PharmacyEmpUser 엔티티와 각각 N:1 관계이다. 아래와 같이 JPQL 작성시 Join을 명시하지 않았다. public interface PharmacyEmployeeRepository extends JpaRepository { @Query("select pe.id as id, " + "pe.pharmacy.pharmacyName as pharmacyName, " + "pe.pharmacyEmpUser.email as email, " + "pe.pharmacyEmpUser.name as name " + "from PharmacyEmployee pe " + "where pe.pharmacy.id = :pharm..
-
API & Response Body 형태 구성Back-end/TIL 2022. 4. 13. 09:24
스타트업 백엔드 인턴으로 근무하여 배운 내용을 까먹지 않기 위해 정리하는 글입니다. # API 형태 구성 API 반환 값은 Json Object (Key, Value)로 구성하는 것이 좋다. 그래야 프론트에서도 (Key, Value)로 접근하기 편리하고, 확장성도 좋다. 응답 코드도 함께 반환해주는 것이 좋다. 응답 메시지는 변경될 가능성이 크기 때문에 프론트에서 처리할 때 응답 코드로 처리하는 것이 훨씬 편하다. 느낀점 파피메일 프로젝트를 할 때는 응답 메시지만 다르게 반환해서 프론트에서 구별해주셨는데 미안한 마음이 들었다. 다음 프로젝트 때는 응답 코드도 필수로 반환하도록 개선해야겠다. # Response Body 형태 응답 코드, 응답 메시지를 포함한 통일된 응답 형태로 반환하기 위해 Respons..