<aside> 🔧 사용 기술 및 협업 관리
실제로 운영을 하며 실무에서 경험할 수 있는 문제와 이에 대한 트러블 슈팅을 통해 성장하고자 시작한 프로젝트였습니다.
이러한 과정 속에서 새롭게 알게된 기술을 최대한 사용하고자 RabbitMQ와 같은 기술을 초반에 로그를 저장하기 위한 용도로 도입하였으나, 실제로 도입하여 사용하던 도중 제대로 이해하지 못한 기술로 인해 문제가 발생하였고 동작 원리에 대한 이해 없이 공격적인 기술 도입이 해가 될 수 있다는 사실을 배웠습니다.
예를 들어, RabbitMQ가 올라가 있는 서버가 메모리 초과로 인해 다운된 경우가 있었는데, RabbitMQ에 대한 이해의 부족으로 연결 실패에 대한 처리를 해두지 않은 연쇄 작용으로 RabbitMQ에 대한 연결을 시도하는 과정에서 멈추게 되어 클라이언트의 요청에 대한 응답이 되지 않은 경우가 있었습니다.
이후 예외 처리를 추가하고 슬랙에 웹훅을 날리는 등 처리를 추가하였으나 결국에는 비동기 요청으로 변경하여 RabbitMQ를 사용하지 않게 되었습니다.
뿐만 아니라 실제로 운영하는 서비스의 경우에는 정말 다양한 경우에 대해서 예외 처리가 필요하다는 것을 느끼게 되었습니다.
그리고, 멘토링 상태에 대해서 매일 자동으로 갱신이 필요 하였는데, 특정인에게 발생하는 문제가 모든 업데이트에 영향을 주지 않도록 하기 위해 트랜잭션 범위에 대한 고민과 스프링 트랜잭션에 대해 기존보다 좀 더 깊은 이해가 필요했습니다.
위와 같은 과정에서 이해의 부족과 잘못된 판단으로 인해 한명의 하나의 예외가 모든 업데이트의 롤백으로 번지는 등 문제가 있었고, 이에 대해 긴 시간의 트러블 슈팅이 필요했습니다.
트러블 슈팅을 하며 기존에 공부하며 기록한 내용이 사용되었으며 마찬가지로 기존에 공부한 내용에 대한 이해가 부족해 발생한 문제 또한 있다는 사실을 알게되었습니다.
이러한 경험을 통해 이론적 이해의 필요성과 기존에 한번 공부를 하더라도 꾸준한 학습과 경험을 통해 자신의 것으로 만들어야 한다는 것 또한 느끼게 되었습니다.