인X타그램에서 게시물 업로드 버튼을 누르면 무슨일이 일어날까? (아 물론 실제 인X타는 안그럴 수도 있음..)
인X타그램 데이터 프로세스
나는 인스타그램 업로드 과정을 5가지 단계로 정의했다.
- 사진 선택
- 업로드 요청
- 서버에서 요청 처리
- 파일 및 메타데이터(사진 관련 정보) 처리
- 업로드 완료 및 후속 처리
위 과정을 그림으로 정리하면 이런 느낌이다.
‘통신’은 어떻게 되는걸까?
그렇다면 어떻게 내가 올린 게시물이 데이터 저장소까지 도달할 수 있는걸까? 그건 바로...
우린 원하든 원하지 않든 웹(Web)세상에 살고 있다. 배민을 이용할 때도 로켓배송을 이용할 때도…
웹은 인터넷이라는 네트워크 상에서 동작하는 서비스다. 그리고 이 인터넷을 통해 서로 다른 서버끼리 통신을 할 수 있다.
그래서 내가 업로드한 게시물은 인터넷 통신으로 인해 웹 서버로 도달 할 수 있는 것이다.
내가 파일을 그냥 서버로 전달하면 얘는 이 데이터가 파일인지, 텍스트인지 알 수 가 없지 않은가..?
웹은 규칙을 지켜서 데이터를 주고 받기로 약속을 했다. 어떻게? 바로 ‘http’를 통해서!
Http에서 파일과 데이터를 웹 서버로 전송하기 위해서는 데이터의 형식을 multipart로 설정해야 한다. 이렇게 해야 서버를 받는 쪽에서 파일을 포함한 데이터라고 인식할 수 있기 때문이다.
그래서 http에 데이터 형식을 입력하는 content-type 란에 multipart form-data를 입력하면 서버가 파일 형식의 데이터임을 알게 된다.
아래는 위 예제를 실제로 서버로 전송했을때의 네트워크 정보다. Http(Hypertext Transfer Protocol) 정보를 확인해보면 multipart/form-data로 전송됐음을 알 수 있다.
서버가 파일을 어떻게 저장하는가
웹 서버로 전송된 요청은 언제, 어떻게 업로드 되는가
웹 서버가 요청을 받으면 해당 요청이 어떤 콘텐츠 타입을 위한 요청인지를 확인하고 그에 맞게 데이터를 해석하여 처리할 수있게 한다.(여기서는 multipart/form-data) 그리고 데이터 저장소에 저장하면 업로드가 완료되는 것이다.
서버와 데이터 저장소의 동작 흐름은 아래와 같다.
먼저 서버는 요청이 multipart/form-data인지 확인한다.
그리고 파일과 메타데이터가 올바르게 들어왔는지 검증한 뒤 실패하면, 요청 처리 실패 결과를 다시 알려준다.
사용자가 올바르게 파일과 정보를 보냈다면, 데이터 저장소에 파일과 정보를 저장하게 된다.
이때 파일이 정상적으로 저장이 됐다면 ‘업로드 완료’를, 실패했다면 ‘업로드 실패’ 결과를 응답하게 된다.
이번 글에서는 인X타그램 업로드 시 내부적으로는 어떻게 동작하는지 간략히 설명하였다.
다음 글에서는 더 자세하게 내부 동작에 대해 설명하려고 한다.
'개발 > 백앤드' 카테고리의 다른 글
[0] [개인 공부] 스레드 세이프티(Thread safety) (0) | 2024.03.26 |
---|---|
[2] 인X타그램에서 게시물 작성 시 어떤일이 일어날까? - multipart/form-data편 (0) | 2024.03.19 |
[MySQL] 레코드 기반의 잠금이란? (0) | 2023.03.05 |
Intellij JSP file upload 문제 해결 (0) | 2022.09.01 |
No suitable driver found for jdbc:postgresql://localhost:5432/database 에러 해결 (0) | 2022.08.31 |