사용자 도구

사이트 도구


web:신규서비스

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
다음 판 양쪽 다음 판
web:신규서비스 [2019/11/01 10:00]
kwon37xi [용어 통일]
web:신규서비스 [2020/03/17 11:37]
kwon37xi [기타]
줄 165: 줄 165:
     * 대체로 **PK asc**를 하는게 DB에서 가장 성능이 좋다. [[https://www.percona.com/blog/2016/10/20/mysql-8-0-descending-indexes-can-speedup-your-queries/|MySQL 8.0 descending indexes can speedup your queryds]]      * 대체로 **PK asc**를 하는게 DB에서 가장 성능이 좋다. [[https://www.percona.com/blog/2016/10/20/mysql-8-0-descending-indexes-can-speedup-your-queries/|MySQL 8.0 descending indexes can speedup your queryds]] 
     * offset/limit 방식(페이징)이 아니라 **''nextPk,limit''**을 조회 조건으로 거는 더보기 방식을 사용해야 성능저하 없이 균일한 응답성을 보장받을 수 있다.     * offset/limit 방식(페이징)이 아니라 **''nextPk,limit''**을 조회 조건으로 거는 더보기 방식을 사용해야 성능저하 없이 균일한 응답성을 보장받을 수 있다.
 +  * 사용자 ID 같은 경우에는 소문자로통일해서 받는것이 좋다. 대문자로 입력해도 소문자로 변환한다. 사용자는 자신이 대소문자를 어떻게 입력했는지 혼동하는 경우가 많다. 단 email 같은 외부 값을 받는 경우는 있는 그대로 넣어야 한다.
 ===== 사용자에게 전달하는 메시징 솔루션 ===== ===== 사용자에게 전달하는 메시징 솔루션 =====
   * Email, SMS, Mobile Push 등의 Messaging은 초반에는 적을 수 있으나 서비스의 증가에 따라 시스템의 부하 요소가 될 수 있다.   * Email, SMS, Mobile Push 등의 Messaging은 초반에는 적을 수 있으나 서비스의 증가에 따라 시스템의 부하 요소가 될 수 있다.
줄 310: 줄 311:
   * 관리툴은 내부 관리자들만 사용하기 때문에 개발자들이 대충만드는 경향을 보이는데 여기에 SPA를 적용하면 UX가 형편없어져서 굉장히 불편해진다.   * 관리툴은 내부 관리자들만 사용하기 때문에 개발자들이 대충만드는 경향을 보이는데 여기에 SPA를 적용하면 UX가 형편없어져서 굉장히 불편해진다.
   * 관리툴은 최대한 단순함을 유지하는 것이 낫다.   * 관리툴은 최대한 단순함을 유지하는 것이 낫다.
 +
 +===== 예외 =====
 +  * 예외(Exception)에 해당 예외의 근본 원인을 찾알 수 있는 정확한 정보를 남겨준다. 예를들어 사용자의 전화번호가 잘못된 포맷으로 입력되었다면, 단순히 ''new IllegalArgumentException("잘못된 전화번호")''가 아니라 ''new IllegalArgumentException(String.format("사용자 %s의 전화번호(%s)가 잘못되었습니다", userId, phoneNumber))'' 형태로 구성한다. 실무에서 예외가 발생했을 때 조금이라도 정확하고 빠르게 대응 가능해진다.
 +  * 예외는 먹는게 아니다.
 +  * 예외 메시지를 UI 에 노출하는 경우가 있는데, 여기에 너무 많은 메시지를 주면 불필요하게 시스템의 보안 이슈가 될 수도 있다. 따라서 UI 노출용 메시지와 로깅용 예외 메시지를 분할하는게 좋다.
 +  * API나 Web 애플리케이션의 경우 예외 발생을 적절한 JSON + HTTP Code 로 변환해주는 예외 핸들러를 두는 것이 좋다. 자동으로 예외가 JSON 으로 변환되 나가도록 하며 그 때, UI 노출용 예외 메시지도 함께 준다. ([[springframework:mvc|Spring MVC]] 에서 ''@ControllerAdvice'', ''@ExceptionHandler'' 등을 사용.)
  
 ===== 기타 ===== ===== 기타 =====
줄 316: 줄 323:
     * 가급적, 밀리초까지 포함한다. 초까지만 지정하면 추후에 밀리초를 사용할 일이 생겼을 때 매우 당황스러워질 수 있다.     * 가급적, 밀리초까지 포함한다. 초까지만 지정하면 추후에 밀리초를 사용할 일이 생겼을 때 매우 당황스러워질 수 있다.
   * 네트워크 연결 되는 설정의 경우 **Connection Timeout과 Read Timeout** 두 가지가 존재한다. 항상 이 둘을 적절히 설정해야 한다.   * 네트워크 연결 되는 설정의 경우 **Connection Timeout과 Read Timeout** 두 가지가 존재한다. 항상 이 둘을 적절히 설정해야 한다.
-  * 예외(Exception)에 해당 예외의 근본 원인을 찾알 수 있는 정확한 정보를 남겨준다. 예를들어 사용자의 전화번호가 잘못된 포맷으로 입력되었다면, 단순히 ''new IllegalArgumentException("잘못된 전화번호")''가 아니라 ''new IllegalArgumentException(String.format("사용자 %s의 전화번호(%s)가 잘못되었습니다", userId, phoneNumber))'' 형태로 구성한다. 실무에서 예외가 발생했을 때 조금이라도 정확하고 빠르게 대응 가능해진다. 
   * UI 에 페이징을 사용하지 않는 것이 좋다. 페이징은 전체 결과 갯수를 필요로 하는데 이로 인해 DB 부하가 매우 크다. [[search:elasticsearch|Elastic Search]] 같은 검색엔진 기반이라면 써도 된다. 하지만 DB 기반으로 하는 대부분의 애플리케이션은 페이징 UI 말고 offset/limit 방식을 사용해서 페이징을 구현한다. 안그러면 서비스가 성장했을 때 UI가 사용이 불가능할 정도로 느려진다.   * UI 에 페이징을 사용하지 않는 것이 좋다. 페이징은 전체 결과 갯수를 필요로 하는데 이로 인해 DB 부하가 매우 크다. [[search:elasticsearch|Elastic Search]] 같은 검색엔진 기반이라면 써도 된다. 하지만 DB 기반으로 하는 대부분의 애플리케이션은 페이징 UI 말고 offset/limit 방식을 사용해서 페이징을 구현한다. 안그러면 서비스가 성장했을 때 UI가 사용이 불가능할 정도로 느려진다.
 +
 ===== 전사 가이드 ===== ===== 전사 가이드 =====
   * 신규 서비스 런칭/변경 등에 대해 각 개발자가 알아서 처리하면 회사 직원들의 노하우가 묻히게 되고 보안 구멍이 많이 생기게 된다.   * 신규 서비스 런칭/변경 등에 대해 각 개발자가 알아서 처리하면 회사 직원들의 노하우가 묻히게 되고 보안 구멍이 많이 생기게 된다.
web/신규서비스.txt · 마지막으로 수정됨: 2024/03/08 11:26 저자 kwon37xi