3. 개발 보고서 - Soobinnn/CAT-24 GitHub Wiki
개발 보고서
개발 지연사유
1. TDD 사용의 미숙함
TDD라는 개념을 교육받으면서 처음 공부하게 되어 생소해서 많이 헤맸습니다.
왜 사용해야 하는지 근본적으로 이해가 부족한 상태로 사용하려다 보니
개발시간도 지연되어서 조금 늦게 시작하더라도 확실히 집고 넘어가야 될 것 같아서 TDD에 대한 공부를 3~5일 정도 소모하였습니다.
이해하고 하나하나 적용시켜보니 처음엔 익숙하지 않아 느렸지만 숙달되면서 점점 개발시간이 빨라지는 것을 느꼈습니다.
2.확장성을 고려하지 못한 DB설계로 인한 수정
API을 개발하면서 확장성을 고려하지 못한 DB설계로 자주 DB수정을 하였고, 그 결과 개발시간이 많이 지연됬습니다.
DB설계를 더 많이 고려 해야겠다는 생각이 들었고, 제 스스로 DB설계 부분이 많이 약하다는 것을 느꼈고,
더 공부하고 경험을 통해 잘 설계해야겠다고 생각했습니다.
보완 사항
1. csrf 웹보안 적용 필요
사이트간 요청위조를 방지하기 위한 웹 보안을 적용해야한다고 생각합니다.
2. OAuth2.0 표준 인증방식 필요
Basic Auth를 사용하면 단순한 형태의 인증방식이어서 구성하긴 편하지만,
사용자 ID, PASSWORD를 HTTP Header에 인코딩 형태로 넣어서 인증 요청을 하고, 디코딩 하는 형태는 패킷을 중간에
가로채서 인증정보를 알아내는 공격에 취약하고,
HTTPS를 사용하면 서버에 SSL인증서를 저장,관리해야 하는 추가적인 운영 부담이 있고,
SSL은 캐시되지 않으므로 성능손해가 심할 것으로 예상됩니다.
그래서 JWT나 OAuth같은 표준 인증방식을 사용하여 사용자 권한 인증 및 보안성 향상시켜야 한다고 생각합니다.
3. 접근제한
DDOS나 무작위 대입 공격을 피하기 위해 요청수를 제한해야한다고 생각합니다.
수많은 요청으로 서버에 부담을 갈 수 있을 뿐더러 악의적인 목적을 가진 공격자를 통해
서버가 다운 될 수 있기 때문에 고려해야한다고 생각합니다.
모든 요청의 HTTPS Header에 API KEY 헤더를 추가해서 요청수 제한과 통계, 지표 데이터를
수집하는 용도로도 사용 할 수 있도록 사용할 예정입니다.