사용자 도구

사이트 도구


web:신규서비스

차이

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

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
다음 판 양쪽 다음 판
web:신규서비스 [2022/02/08 21:48]
kwon37xi [보안]
web:신규서비스 [2022/02/10 10:38]
kwon37xi [API 설계]
줄 283: 줄 283:
     * 비밀번호, 암호화 Key, Hash Key 등을 소스에 넣지 말고 원격접속을 통해 어딘가에서 값을 가져오게 한다.     * 비밀번호, 암호화 Key, Hash Key 등을 소스에 넣지 말고 원격접속을 통해 어딘가에서 값을 가져오게 한다.
   * 회사 규모가 작을 때는 상관없지만 커지면 Github 같은 외부 노출된 저장소 사용시 Key 노출로 인한 보안문제가 발생할 수 있으므로, 사내망에서만 접속 가능한 Source Code Repository를 구축한다.   * 회사 규모가 작을 때는 상관없지만 커지면 Github 같은 외부 노출된 저장소 사용시 Key 노출로 인한 보안문제가 발생할 수 있으므로, 사내망에서만 접속 가능한 Source Code Repository를 구축한다.
-  * 소스 코드 뿐만 아니라 jar, npm, pip 등의 리포지토리도 회사 내에 구축해서 외부 리포지토리를 프록시 처리해야 회사 내부용 의존성을 관리하고 더불어 캐싱을 통해 의존성 다운로드 성능을 향상할 수 있다. 
   * 코드에서 Validation, 돈 등의 계산은 항상 요청을 받는 서버에서 해야한다. 브라우저등의 클라이언트측 Validation은 단순히 고객 편의를 위해서일 뿐이며, 최종 검사는 항상 서버에서 이뤄져야 한다. Client의 요청은 언제든지 조작 가능하다.   * 코드에서 Validation, 돈 등의 계산은 항상 요청을 받는 서버에서 해야한다. 브라우저등의 클라이언트측 Validation은 단순히 고객 편의를 위해서일 뿐이며, 최종 검사는 항상 서버에서 이뤄져야 한다. Client의 요청은 언제든지 조작 가능하다.
   * 요즘엔 다중 기기에서 로그인 유지 상태로 지속적으로 애플리케이션을 사용하는 경우가 있는데, 이 때 사용자의 계정 해킹등이 발생하거나 혹은 기타 다른이유로 해당 사용자로 인증된 모든 기기의 인증을 해제시킬 수 있어야 한다.   * 요즘엔 다중 기기에서 로그인 유지 상태로 지속적으로 애플리케이션을 사용하는 경우가 있는데, 이 때 사용자의 계정 해킹등이 발생하거나 혹은 기타 다른이유로 해당 사용자로 인증된 모든 기기의 인증을 해제시킬 수 있어야 한다.
줄 380: 줄 379:
   * API 호출 내부에서 다른 API를 호출해서 결과를 합치는 일을 하는 것은 좋지 않다. 내부 호출 API의 장애가 전체적으로 다 전파 돼 버린다.   * API 호출 내부에서 다른 API를 호출해서 결과를 합치는 일을 하는 것은 좋지 않다. 내부 호출 API의 장애가 전체적으로 다 전파 돼 버린다.
     * 최초의 API호출자는 여러 API 호출이 필요하면 다른 API에게 또 다른 API호출을 요청하기 보다는 스스로 모든 요청을 하는게 장애 포인트를 줄여나가는 방법이다.     * 최초의 API호출자는 여러 API 호출이 필요하면 다른 API에게 또 다른 API호출을 요청하기 보다는 스스로 모든 요청을 하는게 장애 포인트를 줄여나가는 방법이다.
 +  * 오류를 오류를 발생시키는게 낫다.
 +    * 오류 발생시 API 응답은 200 으로 정상으로 내리면서, 응답 데이터에 오류 코드등을 넣게 설계하는 경우가 있는데
 +    * 이렇게 되면 모든 호출자가 응답에 오류코드가 있는지 일일이 확인해야 한다.
 +    * 이를 확인하지 않고 데이터를 사용할 경우 에러가 즉각 발생했으면 오히려 문제가 덜 발생했을 것을 더 큰 문제로 커지게 된다.
 +    * 예를들어 에러코드는 존재하고, 응답 데이터는 empty 로 주는데, 이때 오류를 확인하지 않고 empty 로 온 데이터를 직렬화하면 응답 객체의 필드가 ''null'' 혹은 기본값으로 채워지게 되고, 이를 가지고 정상응답으로 착각하고 나머지 프로세스를 타면 아주 치명적인 문제가 될 수 있다.
 ===== MQ 등을 통한 비동기 처리 ===== ===== MQ 등을 통한 비동기 처리 =====
   * 비동기 처리는 반응 속도를 높이고 전송 신뢰도를 높여주는 등 좋은 점이 있지만 단점들도 많으므로 확실히 이해해야 한다.   * 비동기 처리는 반응 속도를 높이고 전송 신뢰도를 높여주는 등 좋은 점이 있지만 단점들도 많으므로 확실히 이해해야 한다.
web/신규서비스.txt · 마지막으로 수정됨: 2024/03/08 11:26 저자 kwon37xi