DIO를 통해 사이드잡으로 부족한 연봉을 체워가던 중 DIO에서 Naver expert에 expert로 등록해 활동할 수 있는 기회가 있다며 다른 돈벌이로 나를 꼬셨다...
Naver Expert 라는 이름이 뭔가 내가 전문가가 된 기분?! 법률 전문가 같은?? 은 아니겠지만 아무튼 기분은 좋았다.
Naver Expert 가 된 뒤 본격적으로 개발자 expert 들은 돈을 어떻게 벌고 있는지 궁금했다.
Expert로서 상담, 클래스를 열어 돈을 벌 수 있는 구조였다. 클래스는 이름 그대로 수업을 해주는 거고 상담이 있는데 그럼 외주는 어떻게 해야 하는거지? 의문이던 중 높은 순위에 있는 개발자 분을 살펴 보았다.
잘 되어있는 라이브러리 가져와 사용하듯 그 분의 상담을 따라 적었다. naver expert 는 상담을 통해 외주 계약을 하는 식이다. 예를 들면 앱 구현 10일 이라고 하면 10일 동안 너의 외주를 담당해 주는데 이만큼 받겠다 이런거다.
개발에 필요한 전체 스코프를 정해져 있고 그 기간도 마음대로 정해져 있는 통째로 계약하는 외주보다 나에게는 더 좋은 방식으로 느껴졌다.
DIO가 월 계약 방식으로 진행했어서 한 회사에 부족한 인원을 메꾸는 서브 개발자의 느낌이라 부담이 덜하게 느껴지기도 했었고 그 방식과 거의 비슷하다 생각했는데, 좋은 시스템이라고 개발을 맡기는 사람들까지 같은 시스템이 아닌데 그 때는 돈 벌 생각에 알지 못했다.
아무튼 Naver Expert를 적당히 꾸미고 클래스는 강의를 만들어야 된단 생각에 귀찮아 적당히 상담을 만들어 어느 정도 완성해 뒀다.
그러고 2틀 뒤 바로 백엔드개발 1일 - 채팅 상담 요청이 왔다. 나는 대화를 시작하고 돈을 받을 것인지 결정해야 하고 대충 내용을 보니 일단 상담은 안 할 필요가 없다 생각이 들어 진행했다. 상담을 건 의뢰인이 어떤 내용을 상담하고자 하는지 간략히 채팅창에 공유했다.
의뢰 내용은 서버 구축 건이고 어떤 os 서버에 어떤 db를 사용중이고 api 생성이 필요하다 했다. 어!? 이건 일단 단순한 상담이 아닌 외주 계약하듯 많은 일거리가 들어온 건가 싶어 반가웠다. 자세히 알기 위해 내용을 더 물어보니 리뉴얼 프로젝트였다. 첫 요구사항은 이렇다. 기존 백엔드와 데이터베이스가 있는데 데이터베이스는 그대로 두고 백엔드 서버만 신규로 효율적으로 개선하고자 했다. 여기서 앱은 본인들이 개발하고 백엔드만 내가 개발하는 방식이었다. 보통은 데이터 보안 상 백엔드를 본인들이 하고 앱을 내가 할텐데 뭔가 많이 꼬였나 조금 불안했지만 돈 벌 생각에 넘어갔다.
의뢰인은 개발 기간은 28일 정도 이야기 했다. 사실은 그것도 주말 빼고 공휴일 빼고 워킹데이 따지면 20일도 안되는 정도!? 마이그레이션을 20일만에 끝내기도 하나!? 주말도 야간도 풀로 일하길 원하는 건가 싶어 좀 당황스러웠지만 그 동안 회사를 옮길 때마다 CTO가 바뀔 때마다 마이그레이션을 하고자 했던 CTO들은 본인들은 일 안하고 개발자가 적은 환경에서 결국 내가 다해야 했었던 슬픈 경험들로 인해 자신있는 분야였기에 일단 양이 적겠지 생각하며 할 수 있다 생각했다!
마이그레이션을 하라 했는데 힌트가 없는 상태다. 그리고 어떤 것도 주지 않는다...;; 뭐지?! 일단 데이터베이스 정보를 요청했다. ERD든, 테스트 서버 데이터베이스 접속 정보든, 아니면 이전에 쓰던 백엔드 소스코드라도 달라고 요청했다. 그랬는데 준다고 하더니 3일 동안 안주다가 접속 정보를 줬다. 데이터베이스 관련 자료가 아예 없다고 했다. 그래서 나보고 데이터베이스 접속해서 알아서 보고 하라는 거구나 싶어 들어가 보니 데이터베이스만 설치되어 있고 데이터베이스 안에 데이터베이스 설치했을 때 상태 그대로 어떤 데이터도 없었다!!
난 내가 잘못한 건가 싶어 서버를 얼마나 뒤져봤는지 모르겠다..; 없다고 계속 말하니 그로부터 3일 뒤 이건 데이터베이스 접속 정보가 아니었고 테스트 서버 주소였다고 한다!!!!🔥
그리고 다시 주말도 지나고 5일이 지나고 나니 데이터베이스에 접속하려면 서비스 중인 실 서버에 접속해서 봐야 된다고 보안 프로그램들과 접속 프로그램들을 알려주었다. 처음 28일 이야기 나오고 이제 휴일 포함 20일도 안 남았을 때 처음 데이터베이스를 볼 수 있었다.
데이터베이스를 보니 생각보다 테이블도 아주 많고 관계도 정의 안 되어 있고 그냥 각각의 데이터베이스들이 아무런 설명 없이 쌓이고 있었다. 이름 규칙도 없고 가끔 값들도 이 값이 왜 들어왔지 싶은 클렌징이 하나도 안 된 데이터들이 쌓여 있었다. 이건 백엔드 서버를 마이그레이션 하는 것보다 데이터베이스 먼저 뜯어 고쳐야 되는 거 아닌가란 생각이 가득 들기 시작했지만 말하지 않고 일단 데이터베이스 내용들을 샅샅히 정리하기 시작했다. 60개 가량의 테이블과 수 많은 컬럼들의 데이터들을 모두 파악하고 문서로 정리한 뒤 결론은 아래와 같았다.
1. 데이터베이스 테이블 간 관계 설정을 해야 함.
2. 테이블 내 컬럼 값들의 규칙이 없고 막 들어와 있음. 규칙을 세우고 클렌징이 필요함.
3. 테이블 분리하는게 좋은데 합쳐 놓아 데이터 이중 삼중으로 쌓아둔 것도 많고 합치는게 나은데 괜히 분리해서 이중 삼중으로 프로세스만 불편하게 만들어 둔 부분도 많아 수정이 필요함.
4. 테이블, 컬럼 이름이 너무 약자(약자인데 규칙이 없음)로 맘대로 지어져 있어 무슨 컬럼이고 무슨 테이블인지 알 수 없음.(혼돈이다...)
5. 로그로 쌓을 로그성 데이터와 서비스에 이용되는 데이터가 분리되어 있지 않아 서비스에는 사실상 필요없는 로그 데이터가 굉장히 비대해진 상태로 서비스에 영향을 줄 예정.
6. 이전에 쓰던 테이블인 것 같은데 날짜 정보는 없어서 확신할 수 없는 테이블이 다수(왜 안지웠냐 대체...🔥) -> 컬럼도 같은 상황.
아무튼 총체적 난국이었던 데이터베이스를 모두 정리하고 개선 방안에 대해 새로 짠 ERD와 로그성 데이터 처리하기 위한 ELK, EFK 등의 방안들을 정리했고 우선 데이터베이스 정리 내용을 전달했다.
그리고 나니 의뢰인은 외주 계약을 하고 싶어했는데, 이번 프로젝트에서 백엔드 개발로 300만원까지 받을 수 있다는 말을 했다. 알고 보니 의뢰인이 외주를 계약하고 나에게 다시 외주를 준 케이스 였던 것...
일단 300만원이면 expert에 등록해 둔 요금이 1일에 20만원인데 15일만 일하면 끝나는...
이걸 왜 내가 해야 하지라는 생각이 가득차기 시작했다..
문득 생각해 보니 규모도 작고 자체 서버에 로그 관리 시스템까지 둬서 서비스를 개선할까라는 생각이 들었다.
그러나 naver expert 에서 처음 채팅할 때 API 당 얼마나 걸릴 건지에 대해 명확히 계산해서 산출 후에 말해주겠다 했었어서 기획이 다 되어 있다는 기획 페이지를 보면 api 를 정리하기 시작했다...(왜 난 하고 있는 거지 계속..)
기획서를 보니 일단 완료된 기획서가 아니었다. 매일 매일 협의를 더 하고 있었고 개선해야 될 부분이 아주 많았다.
중복된 기능, 버튼, 문구, 불가능한 기능, 이런 건 어디에도 안 쓰는 기능 등등 일단 아직 매일 매일 개선되고 있으니 그런 건 넘어가고 전체적으로 봤을 때 필요할 것 같은 API 를 정리하기 시작했다.
생각보다 역활이 많이 나눠져 있고 구현해야 할 기능도 적지 않았다. 다 작성해 보니 앱에서 사용하는 API 만 100개 가까이 됐다. 근데 20일만에 해야 했다고??? 그리고 300만원??? 내가 시세를 잘 모르는 건지 아무튼 그 동안 해 온 프리는 진짜 간단한 것들을 할 때 200~300 정도를 받았었고 지금 해야 하는 건 아무리 보다 300만원 일이 아니었다. 심지어 서비스를 운영하려면 admin 도 구현해야 할텐데 그 내용은 정리도 안 된 상태다. 진짜 매우 필수적인것만 구현한다 생각해도 그것만 최소 6일은 필요하다 생각했다. 그렇게 각각의 API들이 각각 어느 정도 걸릴지 약간은 보수적으로 산정했고 최소 40일 정도가 필요하다는 결론에 도달했다. 어드민 생각 안하면 30일 정도 걸리는데 아무튼 그렇게만 해도 30*20 = 600이니 안 되는 거래였다.
내가 한 말을 지키기 위해 결국 마무리를 잘 지었다. 그리고 서비스 마다 여건이 다르겠지만 이런 서비스들은 어떻게 개선할까 생각하는 재밌는 시간이었다.
오픈소스 SecretOps Infisical (0) | 2023.11.28 |
---|---|
Nextjs에 GA 적용해 유저 행동 분석하기! (1) | 2023.11.27 |
Exception & Error Handling in Python For Professional (0) | 2023.09.26 |
pd.read_csv(), pd.to_csv() -> Modin 👍 (0) | 2023.07.20 |
Flutter vs React Native 2023 🧑🏻💻 (0) | 2023.06.23 |
댓글 영역