신규기능 개발시 유념 사항

새로운 기능 개발시 생각해볼 것.


1. 해당 기능구현을 위해서 필요한 데이터들을 현재의 DB에서 저장되고 관리되는데 문제가 없는가?

  •  문제가 발생하여 해결하기 위한 방법으로 데이터를 조금 변형해도 되는가?
  • 데이터 변형이 불가능하다면 기능 타협을 통해서 구현이 가능한가?
  • 기능타협이 불가능하다고 하더라도 새로운 DB종류를 사용한다던지 하여 개발할 수 있는가?


2. 기능 개발에 필요한 라이브러리가 기존의 프로젝트의 프레임워크, RDB, 자바버전 등등 과 호환이 가능한가?

  • 호환이 불가능해도 구현할 수 있는가?  (라이브러리의 기능을 자체개발 한다던지 등)
  • 기존의 프레임워크를 교체할 수 있는가? 교체할 필요성이 있는가?

 

 

3. 새로운 기능이 시스템의 전반적인 성능에 영향을 미치는가?

  • 해당 기능으로 인해 발생하는 DB에 대한 요청수가 얼마나 될 것인가?
  • 해당 기능으로 인해 발생하는 네트워크 부하가 얼마나 될 것인가?
  • 해당 기능이 메모리나 CPU 자원을 많이 소모하는 작업이지는 않는가?

 (ex : 이미지, 비디오 데이터 처리, 스트리밍 데이터 처리, 실시간 데이터 수집, SSL 통신에서 일어나는 암호화, 복호화 과정 등)

 

 


26년 이후 추가 작성 부분

 

4. 확장성 (Scalability & Asynchrony)

  • 이 기능이 트래픽이 10배, 100배 늘어났을 때도 버틸 수 있는가?
  • 동기(Sync)로 처리해야만 하는가, 아니면 메시지 큐(Kafka, RabbitMQ 등)를 통해 비동기(Async)로 격리할 수 있는가?

5.관측 가능성 (Observability)

  • 이 기능이 오작동할 때 로그나 메트릭으로 바로 인지할 수 있는가? (ELK, Prometheus 등)
  • 문제가 생겼을 때 전체 시스템을 죽이지 않도록 차단기(Circuit Breaker)를 달 수 있는가?

6.보안 (Security - DevSecOps)

  • 새로운 기능이 기존의 권한 체계(AuthN/AuthZ)를 우회하지는 않는가?
  • 입력 데이터에 대한 검증(Validation)은 라이브러리 레벨과 DB 레벨에서 이중으로 이루어지는가?