본 번역은 검증되지 않았습니다. AIP를 통해 영문원문으로부터 번역되었습니다.

HTTP 오류 코드 이해하기

이 가이드의 목적은 웹 프론트엔드와 상호 작용하면서 만나는 HTTP 오류 코드에 어떻게 대응해야 하는지에 대한 기본적인 정보를 제공하는 것입니다. 많은 기법들이 어떤 웹 인터페이스에서든 일반적으로 적용 가능하긴 하지만, 우리는 Foundry를 사용하는 컨텍스트에서 그것들을 설명할 것입니다.


HTTP 오류 코드란 무엇인가?

웹페이지를 열려고 시도할 때, 브라우저는 페이지의 컨텐츠에 대한 서버에 대한 일련의 요청을 생성합니다. 의도는 서버가 요청을 받아, 어떤 컨텐츠를 제공해야 하는지 파악하고, 그 후 정확한 컨텐츠와 함께 응답을 보내는 것입니다. 브라우저는 그 후 컨텐츠를 조합하여 페이지를 표시합니다.

이 가이드에서는 이후에 요청 개념을 자세히 다룰 것입니다만, 여기서는 응답에 초점을 맞추고 있습니다. 서버가 반환하는 각 응답에는 항상 상태 코드가 포함되어 있습니다. 상태 코드는 서버가 제공하는 응답의 상태를 나타냅니다. 이는 3자리 숫자로 표현되며, 해당 숫자는 일반적으로 인터넷 엔지니어링 작업 팀에 의해 정의된 의미를 가집니다. 페이지가 로드되지 않을 때 이러한 것들을 본 적이 있을 것입니다 - "404"와 같은 용어는 아마 익숙할 것입니다. 여기서는, 각 코드가 무엇을 의미하는지, 그리고 어떻게 그 정보를 사용해 쉽게 수정할 수 있거나 더 나은 오류를 보고할 수 있는지에 대해 좀 더 자세히 알아보겠습니다.

응답에서 보내지는 3자리 숫자의 첫 번째 숫자는 상태의 카테고리를 나타냅니다. 이 가이드에서 중요한 카테고리는 다음과 같습니다:

  • 2xx: 코드가 2로 시작하면 요청이 성공했다는 것을 의미합니다. 전체 코드는 일반적으로 단순히 200이며, 이는 일반화된 성공적인 요청과 응답을 나타냅니다.
  • 4xx: 코드가 4로 시작하면 클라이언트 오류로 인해 요청이 실패했다는 것을 의미합니다. 클라이언트는 요청을 하는 엔티티를 가리키며, 보통 현재 사용하고 있는 브라우저나 웹페이지를 의미합니다. 아래에서 이러한 코드의 예를 몇 가지 살펴볼 것입니다.
  • 5xx: 코드가 5로 시작하면 서버 오류로 인해 요청이 실패했다는 것을 의미합니다. 이는 일반적으로 요청이 잘 구성되고 잘 제출되었지만, 서버가 그것을 검사하고 어떤 응답을 돌려보낼지 결정하려 할 때 문제가 생겼다는 것을 의미합니다. 아래에서 이러한 코드의 예를 몇 가지 살펴볼 것입니다.

이제 몇 가지 실제 코드를 살펴보겠습니다. 이 목록은 완전하지 않으며, 여기에 나열되지 않은 숫자를 만나면, 완전한 목록을 온라인에서 참조할 수 있습니다 (외부).


클라이언트 오류

400 - 잘못된 요청

이 오류 메시지는 서버에 보낸 요청에 내부 문제가 있음을 나타냅니다. Foundry 개발자들은 이 오류 코드가 드물게 만나질 수 있도록 노력합니다, 왜냐하면 가장 일반적인 원인은 잘못 구성된 요청 구문이기 때문이며, 이는 보통 기본 코드에서 정의됩니다. 그러나 "잘못된 요청" 오류의 일반적인 원인 중 하나는 과도하게 큰 요청으로, 요청에 너무 많은 데이터가 있어 서버가 처리할 수 없는 경우입니다.

맨 위로 돌아가기


401 - 권한 없음

"403 - 금지됨"을 본 것이 "401 - 권한 없음"을 본 것보다 훨씬 더 흔할 것입니다, 하지만 그들은 의미상 매우 유사합니다. 일반적으로 401 오류는 요청이 잘 구성되었지만, 그것을 만들 권한이 없다는 것을 의미합니다. 이것이 403과 다른 점은, 일반적으로 자신을 인증하려고 시도했지만 인증이 실패했거나 "금지"로 플래그가 지정되었을 때 예약되어 있다는 것입니다.

맨 위로 돌아가기


403 - 금지됨

금지됨 오류는 허용되지 않는 요청을 만들었다는 것을 나타냅니다. Foundry에서는 자원에 접근할 수 없다고 ACL (Access Control List) 규칙이 명시되어 있는 경우 이 오류를 자주 만날 수 있습니다. 이는 예를 들어, 사용자가 볼 수 없는 데이터일 수 있지만, 서비스에도 적용됩니다. 사용자가 Data Lineage 애플리케이션을 열 수 있는 권한이 없는 경우, 예를 들면 "403 - 금지됨"을 볼 수 있습니다.

맨 위로 돌아가기


404 - 찾을 수 없음

이 오류는 존재하지 않는 것을 요청했다는 것을 의미합니다. 예를 들어, 특정 에셋이 제거되었다면, 그 에셋에 접근하는 것은 "404 - 찾을 수 없음"으로 표현될 것입니다, 왜냐하면 요청한 리소스가 존재하지 않기 때문입니다.


서버 오류 코드

500 - 내부 서버 오류

이 오류는 서버가 요청을 받아 응답을 생성하기 위해 내부 작업을 수행해야 했지만, 이 과정에서 서버 내부에서 오류가 발생했다는 것을 나타냅니다.

예를 들어, 서버의 역할이 두 숫자를 포함하는 요청을 받아서 첫 번째 숫자를 두 번째 숫자로 나누는 것이라고 가정해봅시다. 이 예에서, "8"과 "2"라는 숫자를 포함하는 요청을 서버에 보내면, 서버는 상태 코드 200 (성공)을 가진 응답을 반환하고 응답에는 "4"라는 답이 포함될 것입니다. 그러나 "5"와 "0"을 보내면, "500 - 내부 서버 오류"를 볼 수 있을 것입니다, 왜냐하면 서버가 5/0을 계산하려고 했을 때, 내부적으로 오류가 발생했기 때문입니다. Foundry의 컨텍스트에서 이는 내부 서비스를 살펴보고 어떤 오류가 내부적으로 발생했는지 파악해야 한다는 것을 의미합니다. 이는 일반적으로 관련 서비스를 식별하고 관련 로그를 찾는 것을 의미하며, 우리는 이 가이드의 후반부에서 이에 대해 다룰 것입니다.

맨 위로 돌아가기


502 - 잘못된 게이트웨이

"게이트웨이"라는 용어는 서비스 간 연결의 뒷면에 "간접성" 요소가 있음을 나타냅니다. https://foundry.link/workspace/magic-app을 열려고 시도할 때 이 오류를 받는다고 가정해봅시다. 실제로 일어나는 것은 요청이 단일 서버 ( "게이트웨이" 서버)에 도달하고, 그런 다음 게이트웨이 서버가 요청을 전달하는 것입니다. 주목할 점은, magic-app은 아마도 게이트웨이와 다른 서버에서 실행되고 있을 것이므로, 게이트웨이는 그 서버 ( "상류 서버"라고 함)에게 응답을 요청하고, 그 응답을 돌려주려고 합니다. 이 오류는 상류 서버가 유효하지 않은 응답을 제공했다는 것을 의미합니다.

맨 위로 돌아가기


503 - 서비스 사용 불가

이 오류는 서비스가 존재한다는 것을 나타냅니다. 그렇지 않으면 404 오류를 받았을 것입니다. 그러나 서비스는 요청을 처리할 수 없었습니다, 대개는 다운되었거나 과부하가 걸렸기 때문입니다. 예를 들어, Contour가 너무 많은 요청을 받아서 더 이상 요청을 처리할 수 없는 경우, "503 - 서비스 사용 불가" 오류를 받을 수 있습니다. 이는 충분한 계산 리소스가 없거나 내부 버그, 예를 들어 메모리 누수로 인한 것일 수 있습니다.

맨 위로 돌아가기


504 - 게이트웨이 시간 초과

이 오류는 "502 - 잘못된 게이트웨이"와 유사하며, 게이트웨이 서버가 올바른 요청을 만들었지만, 상류 서버로부터 적시에 응답을 받지 못했다는 것을 의미합니다. 이는 네트워크 연결 문제, 서버 다운타임, 서버 과부하 등 다양한 이유로 발생할 수 있습니다. 504 오류가 발생하면, 이는 일반적으로 접근하려는 웹사이트나 웹 애플리케이션이 일시적으로 사용 불가능하다는 것을 의미합니다. 이는 일반적으로 사용자의 장치나 인터넷 연결 문제가 아닙니다.

맨 위로 돌아가기