티스토리 뷰
TASK
이번에 맡아서 개발한 부분은 A시스템에서 B시스템이 사용할 파일을 업로드받고 B시스템, C시스템으로 API 연동하여 전송, 후처리 요청까지 하는 부분이었다. 그렇게 큰 업무는 아니었지만 이 기능이 본 프로젝트를 진행하는 이유였기 때문에 중요했다. 관건은 작업 요청 목록이 여러 개 있고, 스케줄로 작업을 실행하는데 작업이 하나 이미 실행중이라면 다음 작업은 작업이 끝날 때까지 실행되지 않아야 하고, 여러 시스템과 연동하면서 발생할 예외 처리를 적절히 해주어야 한다는 것이다. 당연히 트랜잭션도 고려해야했다.
그래서 개발을 진행하며 Transaction이 시작되고 끝나기까지 내부 코드는 어떻게 돌아가는지 살펴보고(Transaction 관련 내부 코드 뜯어보기) 중첩된 @Transactional을 실험해보기도 하면서 트랜잭션의 전파에 대해서도 알게 됐다.(중첩된 @transactional을 실험해보자) 우아한 형제들 기술 블로그에 같은 문제가 올라와있어서 도움이 많이 됐다. 자바에서 동시성 문제를 해결하기 위해 Atomic Type, volatile, synchronized를 사용한다는 것도 알게 됐고, 나의 경우 Atomic Type을 이용했다. 중간에 NullPointerException이 났는데, 예외를 밖의 메소드에서 잡아줘서 로그를 남길 때 e와 e.toString()은 어떻게 다른지도 배우게 됐다.(로그를 남길 때 e와 e.toString()은 다르다)
이번 안건은 크진 않은 안건이었지만 내가 앞으로 동시성 문제와 트랜잭션, 그에 따른 예외 처리에 주의해가며 개발해야함을 많이 배울 수 있었다. 그래서 이제 본 프로젝트도 슬슬 마무리가 되어가니 다음 프로젝트 전까지는 이번 프로젝트로 배운 동시성 문제와 트랜잭션, 예외 처리를 고려할 수 있는 개인 프로젝트를 작게 해볼까 생각하고 있다.
KEEP
- 본 개발 건을 진행하면서 트랜잭션의 적용과 전파, 예외 처리에 대해 고민한 것은 참 좋았던 경험이라고 생각한다. 앞으로도 어떤 개발안건이 있을 때 구현에 대해 여러 가지 찾아보아야겠다.
- 요구사항과 예외상황을 꼼꼼히 정리하는 것은 아무리 강조해도 지나치지 않은 것 같다. 꼼꼼히 하자.
PROBLEM
- 나는 A시스템쪽을 개발했고, B시스템, C시스템쪽은 팀장님이 개발하셨다. 개발시점에 차이가 나면서 나는 내 개발을 마치고 mock으로 간단히 응답만 던져주는 서버를 연동하고 테스트했는데, 내가 테스트할 때는 문제가 되지 않았던 부분들이 B시스템, C시스템과 연동하고 테스트하는 과정에서 발생했다. 문제는 내가 잘못 구현하고 모르고 있었던 것... mock으로 응답해주는 서버도 잘못 되어 있어서 나중에서야 알았고. 문서를 꼼꼼히 살펴보자.
- 외부 시스템과 API로 연동하는 기능을 테스트코드로 짜는 건 어렵다. mock을 사용하는 것도 아직 익숙하지 않고. 방법은 연습뿐이겠지.
TRY
- 트랜잭션에 대해 알아보면서 기존 코드 중 팀원들과 이야기해볼만한 부분을 찾게 됐다. 이 부분은 팀원들과 상의해보고 적절하게 코드를 변경해야할 듯하다.
- 본 개발 건을 진행하면서 고민했던 트랜잭션의 적용, 전파, 예외 처리는 앞으로 내가 숱하게 만날 문제라고 생각한다. 작게나마 개인 프로젝트를 진행하면서 동시성문제, 트랜잭션 예외 처리 등에 대해 고민해보고 이와 같은 개발 안건이 또 오면 능숙하게 해낼 수 있도록 연습하자.
- 위 지난 프로젝트 회고를 보면 쿼리를 효율적으로 짜야할 필요성에 대해 이야기하고 있는데, 본 프로젝트같은 경우 쿼리의 중요도나 비중이 많이 적었다. 그래도 다음 프로젝트를 위해 쿼리 공부를 틈틈이 해두자.
'업무 경험 및 성과' 카테고리의 다른 글
AWS HTTP 요청 HTTPS로 리다이렉션하기 (0) | 2022.11.12 |
---|---|
왜 Atomic Variable을 사용했을까? (0) | 2022.11.11 |
Session을 통해 권한 확인하고 실행하는 기능 테스트코드 짜기 (0) | 2022.08.28 |
@ControllerAdvice기능을 확인하기 위한 테스트코드에서 발생한 트러블 슈팅 (0) | 2022.08.27 |
heroku postgresql credentials rotate 헤로쿠 postgresql credentials 변경 (0) | 2022.08.21 |