본문 바로가기

Project

[Pre-Onboarding] 원티드랩 회고록

1.  프로젝트 설명

▶ Github

https://github.com/Wanted-Preonboarding-Backend-1st-G5/Assignment3-TW-JW-YY

 

GitHub - Wanted-Preonboarding-Backend-1st-G5/Assignment3-TW-JW-YY: assignment3(원티드랩) by 김태우, 박지원, 고유영

assignment3(원티드랩) by 김태우, 박지원, 고유영 for Django. Contribute to Wanted-Preonboarding-Backend-1st-G5/Assignment3-TW-JW-YY development by creating an account on GitHub.

github.com

 

▶ 팀원구성

▷ 김태우, 고유영, 박지원(3명)

 

이번 프로젝트는  팀원 전원이 함께 하는 프로젝트였는데,  우리팀은 3명 & 2명으로 나눠서 진행하도록 했다.

 

DRF를 다룰 줄 아시는 분이 태우님 포함 3분이었고, 나 포함 2명을 DRF를 다뤄본 적이 없어서

같이 프로젝트를 하면 조금 어려울 것 같고, 각자 목표가 조금은 다를 수 ]DRF를 적용해볼 수 있는 좋은 기회가 되었다.

 

▶ 진행기간

▷ 21.11.08(수) 17:00 ~ 21.11.09(목) 24:00

 

▶ 필수 구현 기능

▷ 입력 및 출력 예시

자동완성 출력 예시 / 검색 출력 예시 
회사 추가 입력 예시

 

 

2.  사용기술 스택

▶ Python 3.8 & Django 3.2 & POSTRESQL 14.0

▶ AWS EC2, Docker

▶ Git, Github, Postman

 

3.  주요 기능

▶ 모델링

▷ JSON필드를 사용

Why?

지금까지는 모델을 고정한 상태(모델링 후 migrate까지 완료된 시점)에서 로직을 구현했지만,

새로운 언어가 추가되어야 하기 때문에 "모델링 계속 바뀔 수 있어야 한다는 것인가?" 라는 고민이 생김

json 형태라면 새로운 언어가 추가가 되어도 구현하기 어렵지 않을 것이라고 판단!

 

▶ 검색 기능 구현

▷ 검색회사의 이름과 태그정보들을 헤더의 언어의 값으로 출력

▷ input

성공케이스 / 실패케이스

▷ output

성공케이스 / 실패케이스

※ 에러발견 ※ 

▷ 잘못 생각한 부분

입력이  "Wantedlab" + "header : en" / "원티드랩" + "header : ko" 이렇게만 들어온다고 생각했었다

그런데, 입력이 "Wantedlab" + "header : "ko" 이렇게 들어올 수 있고, 그렇다면 한국어로 결과값을 반환해 주어야 한다!

 

▷ 처음 로직

아래와 같이 조건을 설정해서 회사와 그에 맞는 태그를 찾아서 반환하는 로직!

(여기서  "ko" → header 에 들어온 언어정보)

 

Company.objects.filter(company_name__ko=name)

 

♨ 고민과 검색...

회사입력이 영어든 한국어든 상관없이 그 회사를 찾아야 하는데 그렇다면 언어로 검색 조건을 걸어서 필터링이 불가능!!

jsonfield 에 존재하는 value 값을 찾는 방법은 없을까?

 

▷ 수정 로직

결국 우리가 선택한 방법은

입력값을 포함하는 회사들을 찾아낸 후 그 요소들에 입력한 회사가 존재하는지를 확인한다.

 

found_company = None
companies = Company.objects.filter(company_name__icontains=name)
for company in companies:
	if name in company.company_name.values():
		found_company = company
		break

 

4. 프로젝트를 마치며

▶ 기억에 남는 부분

DRF를 처음 공부하면서 공부한 부분을 바로 구현하는데 적용을 해서 프로젝트를 끝냈다는 점이 개인적으로 굉장히 좋았다.

왜냐하면 태우님이 원티드 선발과제를 DRF로 구현하신 것을 보고

코드 길이 자체가 굉장히 짧아서 놀랐고, 이 정도면 api를 구현하는데에 있어서 속도 차이도 상당할 것이라고 생각했다.

그래서 프리온보딩 과정 중 개인적인 목표가 DRF를 배우고 적용해보는 것이었는데, 기본적인 class기반의 APIView 로 작성을 했지만

아주 만족스러웠다!

 

▶ 아쉬웠던 부분 & 보완할 점

아쉬웠던 점은 거의 프로젝트가 완성될 때 쯤 에러를 발견한 부분이었다.

물론 여러가지 고민을 하고 수정해서 로직을 만들었지만 효율적인 로직이라고 생각되지 않아서 아쉬웠고,

"제대로 확인하지 못해서 팀원들의 귀가를 늦춘 것이 아닌가?" 라는 속상한 마음도 있다.

 

시간이 촉박하다보니 일단 필수기능을 구현하는 데에 초점을 맞춰서 진행한 부분이 있는데,

사실 개발을 하면서 시간이 여유로운 경우는 많지 않으니 익숙해져야 하지 않을까 생각했다.

데이터를 수정할 때 등 여러 상황들을 고려해서 어떤 부분이 더 효율적일지는 고민해보고 리팩토링해서 팀원들과 공유하고 싶다!