728x90

실제 코드 구현 기간: 12/7~12/13

 

팀원들과 내부적으로 기능리스트업을 하고 마일스톤을 짤 때, 일정 등록/수정/푸쉬 이 세 가지 기능이 젤 복잡할 것이라고 이야기했었다.

실제로 sprint 2주차 때는 잠을 제대로 잔적이 없었을 정도로 공부로든 코드 구현이든 많은 시간을 보냈다.

이에 따라 어느정도 마일스톤에 맞춰서 구현하고자 하는 기능은 구현완료하여 sprint3주차를 맞을 수 있었다.

 

프로젝트 Sprint 3주차

3주차의 주요이슈사항은 2주차 때 구현한 기능의 완성도를 높이는 일이었다. 추가적인 기능을 생각해내서 많은 것을 구현하기 보다는 하나의 기능도 깊이있고 완성도 있게 구현해야겠다고 팀원들과도 합의를 보았다. 

 

나에게 있어서는 3주차가 가장 인상깊었던 주차였다. 기술발표 때도 다루었던 DB trasaction 관련 에러를 해결하면서 많은 공부가 되었기 때문이다. 그러는 과정에서 server/DB의 구조, 효율적인 네트워크 통신, 등을 위한 논리적 고민의 중요성에 대해서 깊이 느꼈고, 눈에 보이지 않지만 쌓이고 쌓인 버그가 전체적인 서비스에 큰 문제를 일으킬 수 있음도 깨달았기 때문이다. 

1. [Client] API 연동(일정등록/일정수정/일정삭제)
  -> 서버 쿼리문 최소화 하며 튕김 현상 줄이기
2. [Client] 서비스 동작 테스트 및 에러 핸들링
3. [Server] 통신 테스트 / 에러 핸들링
 -> DB trasaction
4. 코드리뷰 / 배포테스트/연동테스트

 

ToDo 1. API연동(일정 관련기능) / 서비스 동작 테스트 및 에러 핸들링

 

2주차 때, 프론트개발자이신 상현님이 전체적으로 UX 기능 구현에 집중하셨고, 나는 서버 쪽의 기능 구현에 집중했었다.

그리고 3주차때는 이 기능들을 다 연결한 후에, 서비스 동작 테스트 후 에러 핸들링에 많은 시간을 할애했다.

실제로 각 기능구현은 문제없이 잘 이루어 졌는데, screen에서 screen으로 넘어가는 과정에서 state가 잘 전달되지 않는 문제도 있었고,

일정이 등록되고 난 이후에 이전 화면으로 돌아가면 새로 등록된 일정도 반영된 상태로 화면이 보여야 하는데, 반영이 안되어 있다던가 

하는 전체적인 서비스 적으로 부족한 부분이 많이 보였기 때문이다.

 

이 한 주 동안에는 상현님이 정말 많은 고생을 하셨던 것 같다. 나도 이 때만큼은 프론트/백엔드 구분하지 않고 서비스를 위해서 react native에 대해서 공부하면서 에러를 해결하려고 노력했었다. 그러나 상현님이 더 한 발 앞서서 깊이 고민하시면서 stack 설계나 구조적으로 잘못된 부분을 전체적으로 잡아주는 등의 일을 해주셨기 때문이다. 

(react native 관련한 stack 등 프론트 관련된 더 자세한 정보는 상현님 블로그를 참고하시면 좋을거 같아서 링크를 남긴다.)

 

ToDo 2. 서비스 통신 버그 해결 -> DB transaction

 

드디어 나온 transaction...어떻게 보면 서버와 DB 통신에 있어서 너무 기본적인 개념이라 지금 생각하면 백엔드 개발자이면서도 이를 놓치고 갔다는 사실이 너무 부끄러울 따름이다...

그런데 이 에러를 직접 발견하고 공부하고 해결하면서 네트워크와 통신, 서버와 DB에 대해서 더 이해하게 되었고 공부하고자 하는 의지를 다질 수 있었기 때문에 잊을 수가 없다.

 

client 쪽 에러가 해결되고, 1차로 빌드 및 배포를 한다음에 각자 서비스를 구동해보았는데, 계속 데이터 반영이 안되다가 시간이 흐르고 나서 중복된 데이터가 막 쌓이는 현상도 발견하고, 앱 자체가 멈춘 것처럼 보이기도 했다. 에러로깅을 해보니, transaction 관련한 에러였던 것이다. 처음에는 503 에러에 초점을 맞추어서 구글링했고, 이에 대해서는 잠깐 껏다켜라 / 새로고침 해라 라는 의견이 많아서 중요한 이슈가 아니라고 놓쳤었다. 그러나 혼자서 테스트를 하면서 이 문제가 왠지 그냥 넘어가선 안되는 문제라고 생각했고, 에러 메시지를 분석하면서 공부하다가 DB transaction에 대해서 알게 된것이다.

 

이에 대한 개념은 블로그에 따로 정리해 두었으니 아래 링크를 참고하자.

DB transaction 이란?

728x90

+ Recent posts