[좋은점]
프로젝트를 하며 스프링에서는 팀에서 정한 스켈레톤 코드를 통해 구조도 명확하게 가져갈 수 있었고 체계적인 개발방법도 배웠습니다. 이를 통해 코드의 일관성을 지킨 점이 좋았습니다.
[아쉬운점]
fastAPI경우에는 처음 프로젝트를 진행해 명확한 코드 구조도 정해진 것이 없어 아쉬웠습니다.
MSA와 kafka등 새로운 기술을 사용한 점도 좋았지만 아직 자세하게는 이해하지 못한 점도 아쉬웠습니다.
MSA를 하다보니 테스트코드 작성이 어려워 단위 테스트밖에 진행하지 못한점이 아쉽습니다.
이번 프로젝트를 통해 빅데이터 구축 및 추천 과정을 경험할 수 있어 좋았습니다. 기획 단계부터 상세하게 고민하며 타겟층을 명확히 선정하고, 활용할 수 있는 데이터셋을 확보하여 서비스에 알맞게 추가적인 전처리 과정을 거쳐 자체적인 난이도가 라벨링된 단어와 문단, 문제 데이터셋을 구축할 수 있었습니다. 이와 더불어 문제에서 다양한 속성을 뽑아내 벡터화하고, 사용자의 이력과 종합적으로 고려하여 자체 추천시스템을 개발하는 과정에서 초개인화된 추천에 대해서 고민할 수 있었습니다.
문제 생성과정에서 프롬프트 엔지니어링을 거쳐 GPT를 통해 생성한 문제가 문제 유형별로 퀄리티가 다르고, 생성한 문제 데이터 분포가 불균일했다는 점이 아쉽지만, 국어교육 전문가와 협업할 수 있는 기회가 주어진다면 이 점을 심도 있게 고민하여 실제 서비스로 구현해보고 싶습니다.
[좋은점]
이번 프로젝트는 마이크로서비스 아키텍처(MSA)를 처음 도입해보는 경험이었습니다. 서비스 간의 독립성과 확장성을 고려한 설계를 직접 해보며 시스템을 보다 유연하게 구성할 수 있는 방법을 배울 수 있었습니다. 또한, MariaDB와 같은 관계형 데이터베이스(RDB)와 MongoDB와 같은 NoSQL을 병행하여 사용하면서, 서로 다른 데이터베이스를 적절히 선택하고 활용하는 능력을 키웠습니다. 예를 들어, 정형화된 데이터를 MariaDB에 저장하고 비정형 데이터를 MongoDB에 저장하여 유연한 데이터 관리를 할 수 있었습니다.
또한, 코드 작성 시에는 코드의 재사용성과 유지보수성을 고려하며 코드를 구현했습니다. 특히, 데코레이터 패턴과 같은 디자인 패턴을 적용해 복잡한 비즈니스 로직과 검증 로직을 분리함으로써 코드의 가독성과 확장성을 높일 수 있었습니다. 이와 함께, 공통 코드를 따로 정의하여 여러 서비스에서 재사용함으로써 개발 효율성을 높일 수 있었습니다.
이번 프로젝트에서는 코드 리뷰도 진행하였습니다. 다른 팀원들의 코드를 보며 다른 사람들의 코드를 이해할 수 있었고, 저 또한 팀원들에게 피드백을 주며 코드 품질을 높이는 데 기여할 수 있었습니다. 더불어, 설계 단계에서 Git 전략과 Spring Boot 코드 컨벤션을 팀과 맞추어 사용함으로써 클린 코드를 유지하는 데에도 많은 도움이 되었습니다.
[아쉬운점]
프로젝트 과정에서 SonarQube와 JMeter와 같은 품질 관리 및 성능 테스트 툴을 사용해볼 기회가 있었습니다. 그러나 이 도구들을 충분히 활용하지 못한 점이 아쉬웠습니다. SonarQube를 통해 코드 품질을 개선하고, JMeter를 통해 성능 테스트를 수행하고 싶었지만, 시간적 여유가 부족해 이러한 툴을 심도 있게 사용해보지 못한 점이 아쉽습니다.
또한, 성능 테스트를 진행하고 성능을 최적화하는 과정에 더 집중했더라면 서비스의 안정성 및 확장성 측면에서 더 나은 결과를 얻을 수 있었을 것이라고 생각합니다.