Skip to content

wanted-pre-onboarding-2nd-BE-Team-D/004_Moa_Data

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

51 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Wanted Backend Pre Onboarding Project 004

3076738490_20220125121000_7714646312

목차

👨‍👨‍👦‍👦 Team "D" member

권상현 김석재 류성훈 정미정
Github Github Github Github

💻 Team work 📒 Project page
공지사항, 컨벤션 공유 등
우리 팀을 위한 룰
요구사항 분석, 정보 공유 및
원할한 프로젝트를 위해 사용

⌛ 개발 기간

2022/05/16 ~ 2022/05/21


💻 Project

💭 프로젝트 설명 & 분석

  • DAG 알고리즘을 사용한 json 파일 처리 API 설계
  • Pandas를 활용하여 csv 파일의 데이터 가공

🛠 개발 조건

  • a.csv 파일은 있는 것으로 전제, 컬럼과 데이터는 자유롭게 생성
  • flask 활용한 개발
  • REST API 각 기능에 대한 Unit test를 수행
  • read : a.csv 파일을 읽어 Pandas DataFrame 반환
  • drop : 지정한 컬럼을 제거한 후 DataFrame 반환
  • write : 지정된 파일 경로로 csv 파일 저장

📰 요구 조건

 REST API 기능
  • job 저장 : 전달받은 job 정보를 json 파일에 저장
  • job 삭제 : 전달 받은 job id를 job.json 파일에서 찾아 삭제 후 저장
  • job 수정 : 전달 받은 job id를 job.json 파일에서 찾아 수정 후 저장
  • job 실행: 전달 받은 Job id를 job.json 파일에서 찾아 task들을 실행
    • 예시: read(a.csv) -> drop(date) -> write(b.csv)

🧹 사용된 기술 스택

  • Back-End :   Python

  • ETC       


🧨 구현 기능

  • job 저장
  • job 삭제
  • job 수정
  • job 실행
  • API 명세서
  • DFD, Sequence Diagram
  • REST API 각 기능의 Unit Test

📃 API 명세서

URL Method Description
" " GET json 파일의 전체 리스트 읽기
" " POST json 값을 받아 json 파일에 저장
"/string:job_id" GET 입력받은 job_id로 검색
"/string:job_id" PUT 입력받은 job 수정
"/string:job_id" DELETE 입력받은 job 삭제
"/string:job_id/start" GET 입력받은 job의 task 수행

DFD

image


📑 TEST CASE

  • 11 개의 테스트 작성

🎭 프로젝트 후기

구현한 방법과 이유, 느낀점 간략하게 서술

권상현

구현한 기능

  • 요구사항 분석
  • REST API 설계
  • API 리팩토링

느낀점

  • API 설계 과정에서 간단히 넘어갈 수 있는 부분을 괜히 어렵게 생각하고 붙잡혀 있었던 바람에 정해뒀던 기일을 지키지 못했다. 물론 이후의 API를 어떻게 구현할지에 대해서도 끊임 없이 고민을 한 덕분에 다른 분들의 코드를 읽고 리팩토링 하는 중 API가 전개되는 과정을 이해하는데 큰 도움이 되었다. 다만 이해하는 과정에 어려움이 없었다 뿐이지 각자 다른 사람이 구현한 API를 유기적으로 연결하는 것은 다른 문제였다.
  • 프로젝트를 진행하면서 만족할만한 코드를 짜는 것이 중요한만큼 적당히 타협하는 것도 중요한 것을 늘 알고 있지만 쉽게 실천이 되지 않는 문제, 남의 코드에 익숙치 않은 문제, 업무 프로세스의 중요성 등 협업능력에 대한 전반적인 재검토와 보완이 필요한 것 같다.
김석재

구현한 기능

  • 요구사항 분석
  • DAG (Directed Acyclic Graph) 활용해 Task 순서를 정하는 알고리즘 구현
  • DFD (Data Flow Diagram)

느낀점

  • 다시 한다면 각자 API구현하기보다는 의견만을 교환하거나 바로 사용 할 수 있게 라이브러리화 할 것입니다.
    이번 프로젝트는 각자의 관점으로 API를 구현해보고 다양한 시각을 통합하면서 프로젝트를 더욱 견고하게 만들 수 있었습니다. 공부를 전제하에 두었기때문에 시도한 방법이었지만 완성된 API 코드들을 하나로 합치는 과정은 일을 한번 더 하게되어 시간 대비 효율이 많이 떨어집니다.
  • 알고리즘은 매력적이다
    프로젝트 요구사항이었던 DAG를 활용하기위해 개념 설명을 듣고 그걸 코드로 바꿔 적용했습니다. 백준에서 문제집 풀던 느낌과 다르게 프로젝트에 필요한걸 만든다는 느낌이 시간이 오래걸렸지만 시간가는줄 모르고 즐겁게 구현했습니다.
  • 전체적인 이해를 위해 필요한 DFD
    DFD를 처음으로 만들어 보았는데 다 만들고 나니까 이전에 복잡하게 생각했던 프로세스가 정말 단순하게 보였다. DFD를 마지막에 만들지만 시작할때의 의견을 종합해 먼저 만들고 끝나고 한번 더 만든다면 팀원들과 같은 이해를 하는데 도움이 될 것 이다.
류성훈

구현한 기능 - 요구사항 분석 - REST API 설계 - API명세서(Swagger) 작성 - pytest 사용하여 Unit Test 작성 느낀점

  • 팀원들과 같은 문서를 읽고 분석하면서 받아들이는 요구사항의 관점의 차이가 있다는 것을 느꼈습니다. 다양한 관점에서 문제를 해석한 후에 괜찮은 해결점에 도달했다는 점이 인상깊었습니다.
  • 마이크로 프레임워크인 Flask를 사용하여 API를 만드는 것은 자유도가 높지만, 그만큼 꼼꼼함이 필요하다는 것을 느꼈습니다.
  • 몇 개의 Swagger 데코레이터를 붙여서 API명세서를 작성할 수 있다는 점이 좋았고 편리했습니다.
  • 유닛테스트를 통하여 코드의 신뢰를 얻는 만큼 정확하고, 빠지는부분이 없어야만 한다는 것을 느꼈습니다.
정미정

구현한 기능

  • 요구사항 분석
  • REST API 설계
  • READ.md, Notion 작성 (문서화)

느낀점

  • 하나의 요구사항에서도 여러 의견이 나와 놓칠 수 있는 부분들을 챙길 수 있었다는 점에서 서로의 피드백을 받아 들이면 견고한 프로젝트가 될 수 있다는 것을 느꼈습니다.
  • 3일간 각자 작성해본 REST API는 저의 코드는 클래스화를 통해서 깔끔해졌지만 에러처리에서 부족함이 있었습니다. 팀원들의 코드를 통해서 어떤 식의 에러처리가 좋은 지 배울 수 있었습니다.
  • 코드를 깔끔하게 하는 것도 좋지만 기한을 맞추지 못한다면 아무 의미가 없는 것을 느꼈습니다. 기능 개발을 해놓고 이후에 고도화하는 것이 좋은 프로세스임을 느껴 적용하도록 노력 했습니다.
  • 코드를 잘 짜는 것도 좋지만, 좋은 커뮤니케이션을 위해 읽는 사람에게읽기 쉬운 문서화를 작성하는 것도 중요하다는 것을 배웠습니다.

About

[원티드 프리온보딩 백엔드과정] 모아데이터 과제

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •  

Languages