한 주 동안 있었던 일, 배운 것
07/04 (월) : ERD 작성, API 명세서 1차 작성
07/05 (화) : CRUD 구현 시작
07/06 (수) : MVP 초기 작성, https 서버 배포 도전(실패..)
07/07 (목) : 고민
이번 주차에는 완성되는 것 없이 이것 저것 조금씩 만지다가 시간이 흐르고 있는 것 같다.
그래서 걱정거리와 하고 싶은 것을 메모해 보았다.
1. 내 서버 배포하기 (https SSL 키 파일)
2. TypeScript & Nest.js 전환하기!
3. mySQL vs MongoDB. 몽고DB만 사용하지 말고 MySQL 꼭 사용해보기.
4. Config 를 전부 .env로 처리해서 .gitignore했어야 했는데 아쉬움.
5. 같은 팀원과 작업 속도랑 차이가 나서 죄책감이 든다. (작업 진행 속도와 스타일이 다름!)
6. 문서를 잘 정리하고 싶은데 너무 시간이 오래 걸려서 걱정.
07/08 (금) : API 명세서 수정, 면담, 기술 멘토링
- 초기설정을 잘해두고 진행하자!
- 프로젝트에 SQL과 타입스크립트를 적용하는 게 좋을 것 같다는 의견을 주셨음.
- 프로젝트를 진행하는 방식에 대해 공부해보기
- 팀원들과 좋은 관계를 유지하려면 기프티콘을 보내보자.(ㅋㅋㅋ)
- 팀원간의 성격과 일 처리 방식이 다른 것은 좋은 것이다! 서로 다르기 때문에 다양한 의견을 제시할 수 있고, 더 나은 곳으로 발전할 수 있다.
- 프로젝트 전체 일정을 짜고 목표를 정하는게 중요하다. (github project)
- 전체적인 일정에서 주차별 목표를 하나씩 달성하는 게 좋다.
- CI/CD : github action
- amazon ECS를 활용하기
- 파이프라인을 구축하면 실수가 줄어든다.
- “개발”은 혼자 해도 된다.
그러나 협업을 할 때는 설계부터 자동 배포와 유지보수 환경을 구축하기 위해 CI/CD가 필수이다.
- 일정계획과 문서작성의 과정을 전체 프로젝트 기간의 1/3 동안 소진한다.
- 디버깅 기능 활용하기!
07/09 (토) : 기본 CRUD 구현
프로젝트의 방법론 :
에자일 방식 - 스크럼(개선점 회의)
애자일은 1970년대 윌리엄 로이스가 대형 소프트웨어 시스템 개발에 관해 제출한 논문에서 처음 등장했으며, '스프린트'(sprint)라는 짧고 점진적인 개발 주기로 구성된 프로젝트 관리 방법론이다.
각 주기는 제품이나 서비스 개발을 지속적으로 향상시키는 데 초점이 맞춰져 있다. 애자일 방법론은 애자일 선언(Agile Manifesto)의 4가지 기본 가치와 12가지 원칙에 바탕을 두고 있으며, 반복적이며 사람 중심적인 개발 방식을 취한다. 프로세스는 다음과 같다.
- 계획: 고객과 주요 이해관계자들이 함께 프로젝트 개념화, 브레인스토밍, 정의, 우선순위설정, 필요 자원, 예산 책정을 논의한다. 그다음 승인 및 실행하는 작업이 이뤄진다.
- 설계: 사용자경험 전문가가 스크럼 마스터, 클라이언트, 제품팀 그리고 기타 주요 이해관계자와 협력해 제품의 모양새와 여타 요소들을 결정한다.
- 개발: 개발팀은 이 단계에서 ‘스프린트’라고 불리는 여러 반복 작업을 거치며 고객 요구사항에 맞는 제품을 개발한다.
- 테스팅: 테스팅 단계에서는 제품이 고객 요구사항을 충족하는지 확인한다. 만약 결함이 발견되면 해당 제품을 개발 단계로 보내 결함을 수정하고 다시 테스트한다. 이 단계는 제품이 고객 요구사항이나 목표를 충족할 때까지 지속된다.
- 배포: 모든 단계가 완료되면 최종 제품을 클라이언트에게 전달한다.
피드백: 팀이 전체 개발 프로세스를 회고하며 제품이나 팀의 성과를 개선하는 방법을 검토한다.
워터풀 방식
워터폴 방법론 또한 제품 개발에 사용되지만 개발 과정은 선형적이다. 즉 프로젝트 시작부터 최종 결과물 전달까지 특정 순서에 따라 이뤄진다. 워터폴 기반 프로젝트 팀은 아래의 프로세스나 주기를 동일하고 정확한 순서로 실행 및 완료한다.
- 요구사항 수집과 분석: 프로젝트에 사용될 기능적, 시스템적 또는 기술적 사양 정보를 클라이언트와 주요 이해관계자로부터 수집한다.
- 설계: 사용자경험 전문가는 고객, 제품팀 및 기타 주요 이해관계자와 함께 제품의 모양새와 여타 요소들을 결정한다.
- 테스팅: 성능, 시스템 및 사용자 승인 테스팅을 수행하여 제품이 요구사항을 충족하는지 확인한다. 만약 결함이나 버그가 발견되면 제품이 전달되기 전에 해결된다.
- 프로젝트 최종 결과물 전달: 프로젝트를 착수할 때 확정했던 사양을 제품이 충족하면 클라이언트에게 전달한다.
- 유지보수: 클라이언트는 제품을 전달받은 후 추가적인 스코프 변경을 요청할 수 있다. 프로젝트 비용과 시간은 추가될 수 있다.
원문 출처:
https://www.ciokorea.com/news/166830#csidx53398fc82e1fc22a4d4f29fe4a3db72