pre-onboarding 001 | Aimmo 회고

This Is Empty.·2021년 11월 10일
0

wanted-pre-onboarding

목록 보기
2/8
post-thumbnail

에이모(AIMMO)

github repository

  • 진행 기간 : 2021.11.01 pm 16:00 ~ 2021.11.03 am 10:00

  • 기술스택 : Flask@2.0.2, python@3.8, mongoDB@5.0.3

  • 과제 요구사항

    • 에이모 선호 기술스택: python flask, mashmallow, mongoengine
    • 필수 사용 데이터베이스: mongodb
    • 원티드 지원 과제 내용 포함
    • 게시글 카테고리
    • 게시글 검색
    • 대댓글(1 depth)
      • 대댓글 pagination
    • 게시글 읽힘 수
      • 같은 User가 게시글을 읽는 경우 count 수 증가하면 안 됨
    • Rest API 설계
    • Unit Test
    • 1000만건 이상의 데이터를 넣고 성능테스트 진행 결과 필요
  • 과제 필수 포함사항

    • Swagger나 Postman을 이용하여 API 테스트 가능하도록 구현
    • READ.ME 작성
      • 프로젝트 빌드, 자세한 실행 방법 명시
      • 구현 방법과 이유에 대한 간략한 설명
      • 완료된 시스템이 배포된 서버의 주소
      • Swagger나 Postman을 통한 API 테스트할때 필요한 상세 방법
      • 해당 과제를 진행하면서 회고 내용 블로그 포스팅

Review

wanted pre-onboarding 코스의 첫 번째 과제는 aimmo기업의 과제를 진행했습니다. pre-onboarding 지원할 때 작성했던 과제를 바탕으로 게시글 카테고리, 게시글 검색, 대댓글 등의 추가 기술을 구현하는 과제였고, 원래 1팀의 인원은 총 6명이지만 절반으로 나누어 3명씩 과제를 진행하게 되었습니다.

일단 들어는 보고, 학부생 시절 딱 한 번 접해는 보았지만 잘 몰랐던(사실 초면이나 마찬가진) mongoDB를 사용해야하는데서 살짝 눈물을 훔쳤습니다. 학부생때부터 관계형 데이터베이스만 주구장창 사용해왔던 저로써는


데이터베이스에 관계가... 없어..? 하는 집 잃은 비버마냥.. 당황했습니다.

관계가 없는데 그럼 테이블은 어떻게 설계하죠..

하지만 개발자는 언제나 익숙한 기술만 사용할 수는 없는 법입니다. 몽고디비는 기업에서 필수로 요구한 사항이니 사용해야만 하는 상황이고, 다음으로는 무슨 프레임워크를 사용해야할지 회의에 들어갔습니다.

과제 제출 기한은 너무짧고, Flask와는 아주 초면이기때문에 처음에는 mongoDB + Django + mongoengine 조합을 사용하기로 결정했습니다.

하지만 참.. 뭐가 안되는걸 느꼈습니다. 처음 쓰는 것이니 열심히 자료를 찾아봤지만 모 블로그에서 django는 NoSQL과 어울리지 않는다는 글을 보게 되었습니다. django + mongoengine 조합을 사용한 글은 거의 0에 수렴했습니다.(제가 못찾은 것 일수도 있습니다..)

mongoengine대신 djongo를 사용해서 django+RDBMS 조합처럼 사용하는 법도 있었지만 결국 쌩 초면인 Flask를 사용하게 되었습니다.

개발 요구사항은 복잡함이나 어려움이 없었지만 초기 세팅에서 시간을 많이 쓰게 되었던 것 같습니다.(초기세팅을 한 세번은 엎은것 같은ㅎㅎ..) 결과적으로는 데드라인 아침 8시에 배포를 끝마치고 잠에 들 수 있었습니다.

이 과제에서 얻을 수 있었던 것은

  • 새로운 것을 빠른시간에 익히고 적용하는 힘
  • 두려워 하지 않고 도전하는 힘

이라고 생각합니다. 물론 자주쓰던 조합으로 사용했다면 훨씬 익숙하고, 퀄리티 있고, 빠르게 개발과 배포를 할 수 있었겠지만 그렇게 했다면 아는 것을 반복하는 것 밖에 되지 않는다고 생각합니다.

정보처리기사를 공부하면서 살충제 패러독스라는 테스팅 원리 용어를 배웠는데 동일한 테스트케이스로는 새로운 결함을 발견하지 못한다. 라는 뜻입니다.

테스트케이스에만 국한된 용어가 아니라, 매번 익숙한 것 만 사용하다 보면(물론 django를 사랑하는 것은 어쩔 수 없지만..) 나에게도 발전이 없을 것이라 생각하게 되었습니다.

물론 약 2일 간의 기간에 새로운 것을 배우고, 적용하는 데 완벽함은 없을 수 있지만 그 안에서 얻는것은 분명 있을것이라고 생각합니다. 새로운 것에 도전하는 용기라도 배웠다면, 공부를 통해서 완벽함을 얻을 수 있겠다는 것을!

profile
Convinced myself, I seek not to convince.

0개의 댓글