본문 바로가기
생각정리

[우테코 레벨3] 이거 좋은거니까 한번 해봐요

by 에드박 2021. 8. 25.

우테코 레벨3에서는 팀 프로젝트를 진행했습니다.

제가 참여한 프로젝트는 "토이프로젝트 커뮤니티 서비스"였습니다.

희망하는 도메인에 1지망 부터 12지망까지 투표하는 방식이었는데 운좋게 참여하고 싶었던 도메인에 당첨이 됐습니다.

(원래는 크루원 전체가 각자 1개의 서비스를 기획해서 발표를 했는데 그 중 인기있는 12개의 서비스가 뽑혔던 것입니다.)

 

이 글은 "토이프로젝트 커뮤니티 서비스"를 개발하고 있는 놀토(놀러오세요 토이프로젝트)팀에서 협업중에 생각했던 것을 정리한 글입니다.


참 좋은건데 설명할 방법이 없네..

 

놀토팀은 백엔드 4인으로 함께모여서 진행을 할 때가 많았습니다.

이유는 전원이 처음해보는 기술에 대해서는 학습한 부분을 공유하거나 실제 코드에 반영하는 과정을 보면서 학습하기 위해서 였습니다.

 

4인으로 개발을 진행하던중 조회 쿼리에 튜닝이 필요한 부분이 있었습니다.

이 때 JPQL로 진행할 지 Querydsl을 적용할지 또는 전체 데이터 조회 후에 도메인 로직으로 처리할지 토론을 했습니다.

저는 Querydsl을 도입하고 싶었는데 제 자신도 당장 Querydsl에 대한 지식이 없었습니다. (JPQL도 마찬가지였습니다..)

단순히 Querydsl이 좋으니 도입을 해보자! 라고 하기엔 너무나 지식이 부족했습니다.

하지만 저를 포함한 3명의 크루는 Querydsl을 도입해보고 싶었습니다. 이때 나머지 한명의 크루는 이런 기술들에 동의할 수 없는 상태였습니다. 'JPA를 사용하는 이유에는 도메인 로직을 사용해서 좀 더 객체지향적으로 개발하는데 있지않은가요?' 라는 의견이었습니다.

 

이때 저는 동의하지않는 의견에 반박할 수 없었습니다. 당장 설득할 말이 떠오르지 않았기 때문입니다.

우선 당시에는 한두개의 조회 쿼리를 위해서 Querydsl은 너무 과하다 라는 결론을 내렸습니다.(당장 인터페이스를 만들고 구현체를 만드는것은 과하다! 라는 의견) 그래서 JPQL을 도입하도록 했습니다.

동의하지 않던 크루는 JPQL에 대해 타협은 했지만 여전히 완벽한 동의는 할 수 없는 상태였습니다. (JPQL도 결국 쿼리를 이용한 조회이기 때문에 데이터베이스 의존적이다 라고 생각했는데 저도 여기에 어느정도 동의하고 있었습니다.)

이때 들었던 생각이 전원이 동의하지 않는 기술에 대해 설득할 수 있는 충분한 지식이 없다면 도입하는것은 좋지 않다고 생각했습니다.

우리 서비스(또는 로직)에 어떤 도움을 줄 수 있는지 설득할 수 있을 만큼 충분한 사전 지식이 필요했습니다.

 

저는 JPQL을 왜 사용하는지에 대해 학습을 시작했고 결론을 내린것은 다음과 같습니다.

데이터는 데이터베이스에 있는데 이것을 도메인 로직으로 처리하기 위해서 데이터베이스의 데이터를 전부 메모리로 올려야 합니다. 데이터베이스의 메모리에 애플리케이션 메모리까지 소모되는 불필요한 로직이라고 할 수 있습니다.
마치 일급 컬렉션을 사용하는데 컬렉션 내부의 데이터를 굳이 밖으로 꺼내와서 컬렉션에 대한 로직을 실행하는것이라고 생각했습니다.
우리가 일급 컬렉션 내부에서 컬렉션에 대한 로직을 처리하는 것처럼 데이터베이스에서 필요한 조회 쿼리를 사용해서 정제된 데이터를 가져오는것이 훨씬 효율적이라서 JPQL을 사용한다고 생각했습니다.

이렇게 결론 내린것을 전원에게 공유했고 전원이 JPQL에 동의할 수 있게 됐습니다.


참 좋은것이면 설명할 줄 알아야한다

아무리 좋은것이라도 충분한 설명이 따라오지 않는다면 그것은 믿을 수가 없습니다.

"이 약을 먹으면 건강에 참 좋은데 설명할 수가 없네요" 라고 하는것은 약을 판매하는데 큰 도움이 되지 않습니다.

"이 약을 먹으면 호르몬 작용을 해서 탈모가 낫게됩니다." 라고하면 위의 약보다 훨씬 잘 팔릴것입니다.

 

개발에서 협업도 마찬가지라고 생각합니다.

좋은 기술이라면 왜 좋은지, 우리 프로젝트에 적용하면 어떤점이 좋은지 설명할 수 있어야 합니다. 비지니스 임팩트까지 설명해준다면 더욱 좋겠지요!

 

물론 이렇게 설명하는 이유는 모든 팀원이 기술에 동의하고 그 기술에 열정적으로 참여하게 유도할 수 있다는 점이라고 생각합니다.

협업에서 동의하지 않는 사람의 의견을 버리고 간다면 그 사람을 버리는 것과 같다고 생각합니다.

물론 충분한 설명이 뒷받침 되고 비지니스 임팩트까지 분명한데 반대를 하는것은 좀 더 생각을 해봐야겠습니다!!

댓글