사용자 도구

사이트 도구


web:신규서비스

차이

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

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
다음 판 양쪽 다음 판
web:신규서비스 [2019/03/30 18:15]
kwon37xi [API 설계]
web:신규서비스 [2019/03/31 13:53]
kwon37xi [Database / 저장소]
줄 160: 줄 160:
     * 필요한 쿼리는 항상 상황별로 다 따로 만든다.     * 필요한 쿼리는 항상 상황별로 다 따로 만든다.
   * Backup/Fail Over 전략을 수립해둔다. : DB 생성 초기 부터 백업/복구/FailOver 전략을 각 DB에 맞게 수립해둬야 한다.   * Backup/Fail Over 전략을 수립해둔다. : DB 생성 초기 부터 백업/복구/FailOver 전략을 각 DB에 맞게 수립해둬야 한다.
 +  * 페이징으로 데이터를 불한/연속 조회 할 경우에는 항상 **더보기 방식**을 사용한다. API 설계 부분 참조.
 +    * ''offset/limit'' 조회는 ''offset''이 뒤로 갈수록 성능이 계단형으로 느려지게 된다. ''offset''을 계산하려면 그보다 앞에 있는 데이터들의 조건을 모두 검사해야하기 때문이다.
 +    * 처리처럼 데이터를 분할해서 가져갈 경우 항상 ''order by PK asc''를 해줘서 페이징의 순서를 명확히 해줘야한다.
 +    * 대체로 **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''**을 조회 조건으로 거는 더보기 방식을 사용해야 성능저하 없이 균일한 응답성을 보장받을 수 있다.
 ===== 사용자에게 전달하는 메시징 솔루션 ===== ===== 사용자에게 전달하는 메시징 솔루션 =====
   * Email, SMS, Mobile Push 등의 Messaging은 초반에는 적을 수 있으나 서비스의 증가에 따라 시스템의 부하 요소가 될 수 있다.   * Email, SMS, Mobile Push 등의 Messaging은 초반에는 적을 수 있으나 서비스의 증가에 따라 시스템의 부하 요소가 될 수 있다.
줄 183: 줄 188:
     * 아주 많은 종류의 여러글을 동시에 읽을 때의 테스트와     * 아주 많은 종류의 여러글을 동시에 읽을 때의 테스트와
     * 한 건의 글을 집중적으로 읽을 때를 테스트 해본다. - 해당 게시글을 가리키는 Row의 집중적인 lock으로 인해 이 경우 성능이 떨어질 수도 있다.     * 한 건의 글을 집중적으로 읽을 때를 테스트 해본다. - 해당 게시글을 가리키는 Row의 집중적인 lock으로 인해 이 경우 성능이 떨어질 수도 있다.
 +  * 성능 측정시 실 데이터 갯수 / 구조 기준으로 한다. 적은 데이터 셋으로 하는 성능 테스트는 무의미하다.
   * CSS는 위로 Javascript는 아래로, 개발시에는 코딩상태 그대로, 실서비스에서는 minify 상태로.   * CSS는 위로 Javascript는 아래로, 개발시에는 코딩상태 그대로, 실서비스에서는 minify 상태로.
   * 라이브러리는 별도 관리하여 전반적인 라이브러리 업그레이드가 한 군데만 고치면 될 수 있는 구조로 만들 것.   * 라이브러리는 별도 관리하여 전반적인 라이브러리 업그레이드가 한 군데만 고치면 될 수 있는 구조로 만들 것.
web/신규서비스.txt · 마지막으로 수정됨: 2024/03/08 11:26 저자 kwon37xi