"협업 프로젝트와 성과에 관하여"
[디프만 프로젝트] - 백엔드를 넘어 개발자가 되기 위해
2022년 초에, 디프만이라는 동아리에 들어가며 백엔드 개발자로서 최대한의 배움을 얻기 위해 다양한 노력을 했습니다.
회사를 재직하며 사내에서 진행하던 프로젝트 외에도, 출퇴근 시간을 이용하여 알고리즘 문제를 풀었으며 추가로 동아리에서의 개발을 위해 API개발과 고도화 등을 공부했습니다.
주말에는 토요일 14시부터 17시까지 동아리 정규 미팅을 진행했고, 일요일에는 추가적인 스터디를 진행하였습니다.
이러한 스케쥴을 계획했던 이유는 이전에 배웠던 내용들을 실제로 적용하는 것 외에도 더 많은 것을 배우고 싶었고, 더욱 뛰어난 개발자가 되고 싶었기 때문입니다.
다만 일주일 내내 다양한 스터디를 진행하면서 주변 친구들이나 가족들과 보낼 시간이 줄어들게 된다는 단점이 있었습니다.
또한 API의 운영과 유지보수를 짧은 시간동안 빠르게 적용해야 했기에, 평소에 잠을 줄이며 개발에 몰두하였습니다.
이 때문에 많은 것을 배울 수 있다는 장점이 있었지만, 개인의 삶에서는 힘든 것들이 많았습니다.
다행이도 동아리를 하면서 친해진 분들과 이야기를 나누며 계속해서 공부에의 원동력을 유지할 수 있었고, 끈기를 갖고 모든 목표를 달성할 수 있게끔 노력했습니다.
그 덕분에 저희가 진행했던 프로젝트는 실제 어플리케이션을 출시했으며, 해당 내용을 통해 공부한 것을 바탕으로 백엔드 개발에의 지식을 함양할 수 있었습니다.
이전까지는 하루의 남는 시간을 공부에 사용하였다면, 올해의 상반기의 삶은 모든 삶을 최대한으로 쏟아부었다고 스스로 생각할 수 있을 정도로 공부에 몰두하였고, 덕분에 마음먹었던 것을 이루고 할 수 있다는 자신을 갖게 되었습니다.
동아리에서 겪은 문제점과 해결 방식, 그리고 관련 내용들은 회고와 정리로 남겨두었습니다.
---
[한이음 프로젝트] - 개발의 첫걸음
대학교 때에 기존 도어락에 필요하다고 생각한 기능을 부여하기 위한 프로젝트를 진행해 보았습니다.
기존의 도어락은 여러번 같은 번호를 누를 경우 다른 사람이 이를 알아볼 수 있고, 항상 동일한 번호를 사용하기 때문에 정보의 탈취가 쉬운 단점이 있었습니다.
이를 해결하기 위해 어플리케이션과 연동하여 인증받은 사용자만이 1회용 비밀번호를 통해 도어락을 사용할 수 있게끔 하는 프로젝트를 해 보았습니다.
해당 프로젝트는 한이음이라는 국가 지원 프로그램에서 진행하였으며, 브레인 스토밍을 통해 기존의 아이디어에 추가로 많은 내용을 더했습니다.
1. 취약계층의 경우 도어락에 미리 등록하여, 일정 기간 개/폐 기록이 없는 경우 자동으로 주변 관공서에 연락이 가도록 하는 기능
2. 도어락을 터치패드로 구성하여 어플리케이션을 통해 UI를 마음대로 변경 할 수 있도록 하는 기능
3. 임시 비밀번호를 발급하여 해당 도어락에 등록된 구성원이 아니여도 출입할 수 있도록 하는 기능
4. 가족 여행 등 아무도 해당 도어락을 사용하지 않을 예정일 때에 작동 자체를 막을 수 있도록 하는 기능
5. 도어락의 개/폐/에러 로그를 저장하여 확인할 수 있도록 하는 기능
등, 여러 아이디어들이 제안되었으며, 이 중 저희의 기술과 시간 상 구현 가능하다고 판단된 기능을 실제로 완성해 보았고 한이음 프로젝트에 성공적으로 제출할 수 있었습니다.
그리고 이런 다양한 아이디어들을 통해 특허를 출원하였으며 생활에 있어 불편한 것이 있다면 이를 해결하기 위한 대응 방안을 생각하는 법을 알 수 있었습니다.
"그동안의 노력과 앞으로의 방향을"
- 확인, 그리고 적용
다양한 공부를 통해 개발자로서의 기초를 다진 후, 제가 배운 것들을 확인해 보는 동시에 여러 문제를 경험하며 이를 해결해 보기 위해 개인 프로젝트를 진행하였습니다.
Spring boot환경에서 Spring data JPA와 H2 Database, spring security, 그리고 이를 보여주는 프론트 뷰를 구현하여 보았고, AWS상에서 구동시켜 확인해 보았습니다.
개발의 시작부터 끝까지 혼자 진행해 보면서 다양한 문제를 실제로 접할 수 있었고, 이전에 배웠던 내용을 실제로 적용하거나 새로운 기술들 시도해 보면서 조금 더 개발에의 흥미를 가질 수 있었습니다.
또한 단순히 기능의 구현에 초점을 맞추어 개발하는 것 보다는, 최선의 퍼포먼스와 깔끔한 코드 작성을 위해 계속해서 노력해야 한다는 사실을 알 수 있었습니다.
- 발전을 위하여
이전까지 개발자로서의 지식의 확장과 다양한 경험을 쌓아 올리는 데에 집중하였다면, 이후로는 깊이를 더해나가는 공부를 하고 있습니다.
JPA, Spring Data JPA에서의 N+1방지 방법과 영속성 컨텍스의 Dirty checking을 사용한 update 사용 이유, OSVI를 사용한 최적화, 실무에서의 lazy fetch와 fetch join 관련 주의사항 등 기초적이지만 중요한 개념들을 정리하고, 이를 통해 기존 프로젝트를 리팩터링 중에 있습니다.
그리고 제가 가진 지식들이 맞는지 확인하고 더 많은 사람과 협업하여 발전할 수 있는 개발자가 되기 위해 `디프만 11기`에 함께하여 디자이너, FE개발자, BE개발자들과 함께 공통의 목표를 이루어 보았습니다.
해당 프로젝트는 더욱 많은 것을 배우기 위해 Redis를 사용한 캐싱 처리, FK를 사용하지 않는 개발과 그 이유에 관한 공부를 함께 진행 중에 있습니다.