원티드 프리온보딩 2주차 (원티드) 회고록

회고록

1. 왜 자바스크립트팀이 원티드 과제를 했나요?

자바스크립트 팀이지만 레드브릭 대신 원티드 과제를 시작했다.
원티드 과제중 자동완성 기능에 대해 흥미가 생겼기 때문이다. 비록 파이썬을 사용해본적은 없지만 두렵지 않았다. 42서울을 통해 새로운 지식을 배울 때 두려움을 가지지 않도록 단련했기 때문이다. 팀원들도 모두 레드브릭 과제보다 원티드 과제를 선호했고, 동의해주었다.

2. 사전학습은 어떻게 했나요?

팀원 4명 모두다 Flask와 Python 지식이 거의 없었다. 하지만 전 과제 (마피아 컴퍼니) 같은 경우도 필요 기술에 대해 모르는 상태로 시작했지만 성공적으로 제작할 수 있었기 때문에 자신감을 가질 수 있었다. 서로 역할을 나누기전에 플라스크로 간단한 웹을 만들어서 사용법을 습득했다. 얼추 감을 잡고 요구사항에 대해 어떻게 개발할지 서로 의논하고 정의했다.

3. 자동 완성 기능에 대해 어떻게 파악하고 접근했나요?

백문이불여일견 직접 자동완성 기능을 사용했다.

우리의 예상처럼 데이터를 입력할 때마다 서버로 전송하고 검색 키워드에 알맞게 응답을 바로 해주었다.

4. 자동 완성 기능을 프로젝트에 어떻게 적용시켰나요?

내가 제작한 서비스중에 조회수 로직을 캐싱처리한 경험이 있었다. 조회수 캐싱 전략
팀원들에게 내가 사용한 방법을 설명했고, 우리 서비스에 알맞는 캐싱 전략을 적용시키기로 했다.

처음에 생각한 자동 완성 기능 로직


Look Aside ( = Lazy Loading )로직을 사용하려고 했다.
클라이언트에게 요청이 들오면 Redis에서 해당 데이터를 찾는다. 그리고 Redis에 데이터를 찾는다면 응답하고 데이터가 없다면 Mysql에 접근하여 데이터를 찾고 Redis를 백업한다. 그리고 클라이언트에게 응답한다.

개선한 자동 완성 기능 로직

  • Read

    처음에 생각한 로직은 해당하는 데이터를 찾지 못할 때 계속 Mysql에 접근해야한다.
    그리고 Mysql에서 데이터를 찾지 못하면 동일한 요청에도 Mysql에 계속 접근해야 하는 단점이 생긴다. 데이터베이스가 최신화되지 않기 때문이다. 그래서 해당 데이터가 Redis에도 Mysql에도 없을 경우에는 데이터베이스에 insert를 해준다면 데이터베이스가 최신화하면 이 문제를 해결할 수 있다. 하지만 이 방법은 적합하지 않다고 생각이 들었다. 우리 서비스는 회사만을 검색하기 때문이다.

  • Write

그래서 요구사항에 있는 새로운 회사 추가 API를 통해 데이터베이스들을 최신화하기로 정했다.

속도 테스트


무작정 캐싱전략이 좋다고 따라하기 보다 직접 Mysql과 Redis를 테스트를 진행했고,
확실하게 Redis가 빠른 것을 느낄 수 있었다

5. 배포는 잘 진행되었나요?

Flask서버를 배포할 때는 호스트와 포트를 변경해서 배포해야 하는데 알지 못해서 3시간동안 골치 아팠다.

 app.run(host=' 0.0.0.0', port=5000, debug=True) 사용하기
    #   app.run(host=' 127.0.0.1', port=5000, debug=True)

6. 프로젝트를 통해 배운점

 - Python(Flask)
 - Python ORM
 - Flask 배포방법

7. 프로젝트에서 목표했던 기술

 - 자동완성 속도 비교 (RDBMS VS REDIS)
 - 캐싱전략

8. 개인적으로 도전이었던 부분

- 개발 일정 맞추기
- gitflow를 활용한 협업하기

좋은 웹페이지 즐겨찾기