권상현 | 김석재 | 류성훈 | 정미정 |
---|---|---|---|
Github | Github | Github | Github |
💻 Team work | 📒 Project page |
공지사항, 컨벤션 공유 등 우리 팀을 위한 룰 |
요구사항 분석, 정보 공유 및 원할한 프로젝트를 위해 사용 |
- 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)
- job 저장
- job 삭제
- job 수정
- job 실행
- API 명세서
- DFD, Sequence Diagram
- REST API 각 기능의 Unit Test
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 수행 |
- 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는 저의 코드는 클래스화를 통해서 깔끔해졌지만 에러처리에서 부족함이 있었습니다. 팀원들의 코드를 통해서 어떤 식의 에러처리가 좋은 지 배울 수 있었습니다.
- 코드를 깔끔하게 하는 것도 좋지만 기한을 맞추지 못한다면 아무 의미가 없는 것을 느꼈습니다. 기능 개발을 해놓고 이후에 고도화하는 것이 좋은 프로세스임을 느껴 적용하도록 노력 했습니다.
- 코드를 잘 짜는 것도 좋지만, 좋은 커뮤니케이션을 위해 읽는 사람에게읽기 쉬운 문서화를 작성하는 것도 중요하다는 것을 배웠습니다.