이번 한주, 조금 힘들었다.. 질문과 고민으로 가득찬 한주 였다. 이번 주에는 지난주 부터 이어하고 있는 DB 테이블을 공부하고, 작성된 코드(row query, orm)을 보고 해당 테이블에서 주로 필요한 데이터는 무엇인지 등을 확인했다. 거의 매일 사수님과 함께 테이블에 대한 이야기와 따로 정리하며 생긴 내 질문들을 이야기하며 평균 한시간동안 이야기를 했다. 분명 매일 바쁘고 정신없게 하루를 보내는 것 같은데, 생각보다 남는 결과물이 없는 것 같아 조금 힘들다..
DB 스키마 분석
DB 스키마 분석은 이번주로 해서 마무리를 지었다. 모든 테이블과 필드를 확인한 것은 아니지만, 사수님 판단하에 필요하다 생각하는 테이블과 필드를 모두 확인하고 정리를 했다. 우리 레거시에 절대적인 특징인 부분과 도메인 처리 과정에 핵심이 되는 테이블들과 필드들을 이해하고 정리해서 위키에 작성해 두었다.
나는 이번에 정리한 문서가 계속 수정되었으면 좋겠다. 내용이 잘못되어 다시 작성하거나 리뉴얼을 통해 갈아 엎어 새롭게 문서를 작성하거나 다 좋으니, 미완성이라 인식된 상태에서 멈춰있지 않았으면 좋겠다.. 당장 지금 내가 느끼는 아직 확인 조차 못해본 테이블들에 대한 정보라도 추가 하고 싶은데, 대체 봐도 이게 왜 필요한 테이블인지 사수님의 배경 설명 없이는 알 수 가 없다.. 그래서 정리를 어떻게 해야할 지 모르겠다..(1차 위기)
그리고 "이렇게 정리만하는게 맞을까?" 하는 생각이 들었다. 도메인을 이해하고 가야 제대로된 서비스를 구현할 수 있을거란 생각을 했고, 지금도 같은 생각이지만, 지금까지 한 정리는 단순 업무부여를 위한 일이라는 생각이 문득 들었다.(2차위기) 정리를 해도 제대로된 확인을 받지 못했기 때문이다. 물론 (각잡고) 꼼꼼히 확인을 바라는 것은 아니다. 그저 정리해본 글과 내용을 피드백받고 싶었다. 이 과정에서 내가 원하는 것은 피드백을 바랬다. 잘못된 부분이 있는지 혹은 다른 방법을 조언을 해준다던지, 이것도 아니라면 잘하고 있다(봤다는 확인)을 바랬다... 그런데 없었다. 그래서 너무 아쉽다...
위키에 DB 스키마 분석 정리해둔 내용을 작성해 두었지만, 어째서인지 이 문서는 작성과 동시에 죽은 문서라는 생각이 들었다... 이런 생각이 드는것이 속상하다..(내가 열심히 살려볼것이다..!!) 미래에 코드를 작성하거나 DB테이블을 참고해야할 때, 나라도 많이 보고, 업데이트하면 좋을 내용을 업데이트하고 해야겠다.
Djnago ORM
DB 스키마를 분석하면서 동시에 해당 테이블들이 사용된 코드들을 많이 참고하게 되었다. 내가 주로 참고한 코드 언어는 python으로 작성된 django 로 만들어진 API 서버 코드를 많이 참고하였다. 많이 사용하는 php 프로젝트를 참고하기에는 아직 내가 php 를 잘 몰라서 내가 공부한 django 프로젝트를 먼저 확인하였다.
API 서버에서는 메인 php 소스코드 보다는 아니지만 작성된 예시 query를 참고할 수 있었는데 과거 부트캠프와 개인프로젝트에서는 사용하지 않던 메서드들을 많이 볼 수 있었다. 알고는 있었지만 잘 몰라 사용하지 못하던 prefech_related()와 select_related(), 그리고 annotate(), value_list() 등등 기존에 많이 익숙치 않은 메서드들을 많이 보았다. 볼 때 마다 자꾸 검색해서 찾아보게 되어 해당 내용을 개인 공부 저장소에다가 정리를 해두었는데, 이것을 내것으로 만들기 위해서는 실제로 사용해서 개발을 해야 될 것 같다.
그리고 ORM을 공부하면서 큰 고민 한가지가 생겼다. "좋은 쿼리는 어떤 쿼리일까?" 이 질문에 대한 답은 없겠지만, 모든 코드에 그렇듯 정답은 없지만 오답은 존재할 것이라 생각한다. 과연 "어떤게 잘못된 쿼리일까..." 고민이 많이 된다. 그리고 나는 "쿼리를 어떤식으로 작성해야 할까?" 어렵다.
마지막으로 "어느때는 Raw Query를 어떤때는 ORM을 사용하는데 이를 하나로 통일 시킬 순 없는걸까?" 하는 생각이 들었다. 사수님께 물어본 나의 생각은, ORM으로 생각하기 복잡한걸 간단하게 Raw Query로 작성될 수 있어 작성되었다는 생각이다.(진짜 이런뉘앙스의 이야기를 들었다..) 당장의 다른 일도 많은데 간편하게 Raw Query를 작성하면 끝날 일을 왜 어렵게 ORM으로 고민하고 있느냐는 말을 듣고 이해를 하면서도 의문이 많이 생겼다. "왜 해당 쿼리는 ORM으로 작성하기 어려운걸까?" "Raw Query로 작성된 쿼리는 어떻게 작성된것이 좋은 쿼리이고 어떻게 작성된것이 나쁜 쿼리인걸까?" 등등 추가적인 고민들이 생겨났다.
느낀점
이번 한주는 안그래도 많은 생각과 고민에 더 많은 고민이 추가되었다. 정답은 알 수 없고, 나는 어떻게 해야 길을 많이 헤매지 않고 나아갈 수 있을까? 어렵다 어려워... 소스코드를 보면 볼수록 아쉬운 부분이 많다.(물론 당연하게 배울점이 더 많다!) 일단 무엇보다 테스트가 없이 최적화, 리팩터링, 기능개발이 이뤄져왔고, 앞으로도 그럴것이라는 점.. 테스트가 없이 이 모든 일들이 이뤄진다는것도 놀랍지만, 필요성을 못느낀다는 점이 무섭다.. 테스트에 대해 물어보았을 때, 나는 할말을 잃었는데.. 내가 테스트를 모르는 사람이 되어버렸다. 테스트가 모두 수동 QA라니..... 나는 충격과 공포에 빠져버린것같다. 내가 자동화 테스트를 도입할 수 있을까? 일반적인 로컬 개발을 할 수있을까..?(sftp로 밀어넣기 그만.... 좋은 디버그 툴도 좀 써보고싶다...)ㅠㅠ 일단 이번주 시도는 실패했다..(하지만 할수있다!!!!!!!!!)
좋은 집단에 대한 고민, 코드에 대한 고민을 하던 중 "구글엔지니어는 이렇게 일한다." 라는 책을 추천받아 읽기 시작했다. 아직 앞부분을 읽고 있지만, 내용이 너무 좋은 것 같다. 인상적인 부분도 많고, 출근길에 출근해서 이렇게 해봐야겠다! 하는 생각을 주는 부분이 많은 것 같다.
나는 구글을 가고 싶다 이런 생각은 아니지만, 확실한건 구글은 좋은 집단이라는 생각이 들었다. 그리고 구글처럼 좋은 집단에서 일을 하고 싶다. 그리고 내가 좋은 집단을 만들 수 있다면 더 좋을 것 같다.
'회고 > WIL' 카테고리의 다른 글
[ WIL ] 11월 1주차 회고 (0) | 2023.11.03 |
---|---|
WIL 10-3~4 소스코드 분석, 수습평가 API 작성 (0) | 2022.10.22 |
WIL 10-1 리눅스 공부, CS 공부, 정보처리 기사 공부, DB 스키마 분석 (0) | 2022.10.03 |
WIL 9-4 도메인 분석과 이해 (0) | 2022.09.25 |
WIL 9-3주차 과도기? (0) | 2022.09.19 |