2024.08.06(화) Web

박현석·2024년 8월 6일

웹 개발

get/post/put/delete 요청 시 타임아웃이 발생할 때 대처법

타임아웃은 서버가 일정 시간 내에 응답을 보내지 못할 때 발생합니다
요청을 일정 횟수만큼 재시도하는 로직을 구현하고 재시도 시 일정 시간 간격을 두거나 점진적으로 대기 시간을 늘리는 백오프 전략을 사용하거나 적절한 에러처리, 모니터링을 통한 복구를 진행하는 방법이 있습니다.

HTTP METHOD 중 대표적으로 많이 쓰이는 것 

GET: 서버에서 데이터를 조회합니다. URL에 데이터를 포함하여 요청합니다.
안전하고 멱등 O
POST: 서버에 데이터를 전송하여 리소스를 생성하거나 변경합니다. 요청 본문에 데이터를 포함합니다. 멱등 X
PUT: 서버에 데이터를 전송하여 리소스를 생성하거나 대체합니다. 요청 본문에 데이터를 포함합니다. 멱등합니다.
DELETE: 서버에서 리소스를 삭제합니다. 멱등 O
PATCH: 리소스의 일부를 수정합니다. PUT과 달리 일부 데이터만 전송하여 부분 업데이트를 수행합니다.

멱등하다는것은 실행전과 후의 상태가 동일.

HTTP 상태코드 

1xx (정보): 요청을 받았고 처리 중입니다.

  • 100 Continue: 요청의 일부를 수신했으며, 나머지를 계속 보내도 됩니다.

2xx (성공): 요청이 성공적으로 수신되고 인식되었으며 처리되었습니다.

  • 200 OK: 요청이 성공적으로 처리되었습니다.
  • 201 Created: 요청이 성공적으로 처리되었으며, 리소스가 생성되었습니다.

3xx (리다이렉션): 요청 완료를 위해 추가 작업이 필요합니다.

  • 301 Moved Permanently: 리소스가 영구적으로 이동되었습니다.
  • 302 Found: 리소스가 일시적으로 다른 URI에 있습니다.

4xx (클라이언트 오류): 요청에 오류가 있습니다.

  • 400 Bad Request: 잘못된 요청입니다.
  • 401 Unauthorized: 인증이 필요합니다.
  • 404 Not Found: 요청한 리소스를 찾을 수 없습니다.

5xx (서버 오류): 서버가 요청을 처리하지 못했습니다.

  • 500 Internal Server Error: 서버 오류입니다.
  • 503 Service Unavailable: 서버가 일시적으로 과부하 또는 유지보수 중입니다.

http method

HTTP 메서드는 클라이언트가 서버에 요청의 종류를 알리는 데 사용됩니다.

  • GET: 리소스의 조회를 요청합니다. 데이터 변경이 없습니다.
  • POST: 서버에 데이터를 보내어 리소스를 생성하거나 수정합니다.
  • PUT: 서버에 데이터를 보내어 리소스를 대체하거나 생성합니다.
  • DELETE: 리소스의 삭제를 요청합니다.
  • HEAD: GET과 유사하나, 응답 본문을 제외한 헤더만 반환합니다.
  • OPTIONS: 서버가 지원하는 메서드 목록을 요청합니다.
  • PATCH: 리소스의 부분 수정을 요청합니다.

Connection timeout/ Read timeout 차이 

웹 네트워크 상 서버와 클라이언트의 통신에서 발생하는 행위입니다. 차이로는 무엇에 대한 시간제한을 거느냐 입니다.
Connection Timeout: 이라는것은 클라이언트가 서버와 연결을 하려할때에 연결되지 않으면 타임아웃이 발생하는 시간을 정하는 것입니다.
Read Timeout: 은 연결이 설정된 후 서버의 첫 응답데이터의 첫 바이트까지 읽기를 기다리는 초과 시간을 설정하는 것입니다. 설정한 시간이 지나도 읽어오지 못한다면 타임아웃을 발생시킵니다.

사용자가 도메인을 치려고 하는데 접속이 안된다. 무엇을 확인해야 할까? 

DNS 가 올바르게 설정되었는지 확인합니다.
그리고 인터넷 연결을 확인하고 웹서버가 동작하는지 , 방화벽 이 도메인을 차단하는지.
SSL 을 사용한다면 유효한지, 캐시를 지우고 다시 시도해보고, 도메인 주소가 유효한지 등 검증 합니다.

대칭키/비대칭키 암호화 차이

대칭키란 하나의 비밀 키를 가지고 데이터를 암호화, 복호화를 합니다.
이는 키관리가 어려워 노출이 될경우 보안이 취약해진다는 단점이 있지만, 단순하고 계산이 빠른 장점이 있습니다.

비대칭키란 2개의 시크릿 키를 사용해 공개키의 노출이 되더라도 개인키로만 복호화 가능하게하여 보안에 강한 강점이있습니다.

패스워드는 어떤 식으로 암호화 하는게 좋을까?

단방향 해시 함수로 변환하여 저장하는 방식인 SHA-256, bcrypt 사용을 합니다. 이는 암호화 된 데이터를 다시 복구 할수 없어 보안이 높다.

웹소켓의 동작방식

웹소켓(WebSocket)은 클라이언트와 서버 간의 양방향 통신을 지원하는 프로토콜입니다.
웹소켓의 통신을 위해서 핸드셰이크 과정을 거칩니다.

  1. 브라우저에서 HTTP 통신을 이용하여 서버에 소켓 통신이 가능한지 요청을 보냅니다. 이 때 헤더에 소켓을 사용하기 위한 Upgrade, Connection, WebSocket에 관한 정보를 함께 전송합니다.
  1. 서버에서 웹 소켓 통신이 가능하다면 서버에서 웹 소켓 통신이 가능하다는 101 상태의 응답을 보냅니다. 이 때 서버에서는 클라이언트에서 받은 'Sec-Web Socket-Key' 키 값에 문자를 더한 뒤 암호화하여 'Sec-WebSocket-Accept'로 클라이언트로 응답합니다
  1. 이후에는 'ws' 혹은 'wss' 프로토콜을 이용해 양방향 통신을 진행합니다.

로그를 따로 관리할 아키텍처 구성하는 방법

로그를 ELK 스택을 활용 하여 수집하고 데이터를 분석하고 DB나 클라우드에 저장합니다.
오픈소스 도구나, 시각화하여 문제 발생시 빠른 대처 가능케하며, 백업정책을 시행하여 로그 데이터가 손실되지 않도록 합니다.

profile
너에게만광대

0개의 댓글