바로 가기
Threads SNS 구현하기 (1) - 개요
트러블 슈팅
Swagger [ Not found @PathVariable ] 트러블슈팅⚽️
GitHub - IMWoo94/Threads-SNS: Thread 스타일 SNS
Threads 란?
- Instagram 팀이 만든 새로운 앱이며 사람들은 자신의 Instagram 계정을 사용하여 로그인
- 텍스트로 새로운 소식은 공유하고 사람들의 대화에 참여한다.
- Threads 에서는 최대 500자 길이의 게시물을 작성할 수 있으며 링크, 사진, 슬라이드, 동영상(최대5분)을 포함 할 수 있다.

개요
- Threads 스타일의 SNS 를 만들어 보면서 외부적으로 많은 사용자를 단숨에 끌어들이고, 이를 대응할 수 있었던 방법을 구현해보면서 생각해보기.
- Instagram 을 기반으로 수 많은 트래픽을 감당 해온 경험과 노하우를 기반으로 Threads 를 운영하지 않을까라는 생각을 해본다.
- Instagram 이 수 억명의 트래픽을 어떻게 감당할 수 있었는지 알아보고, 최근 Java21 에서 제공되는 Virtual Thread 방식을 적용하게 된다면 기존의 Thread 보다 더 나은 성능을 발휘 할 수 있을지 알아본다.
Instagram 이 수억명의 유저를 감당한 방법
인스타그램 백엔드가 20억 유저를 감당하는 방법!
- 인스타그램의 수 많은 트래픽 이와 함께 이야기 할 수 있는 저스틴 비버 현상을 어떻게 해결하고, 사용자에게 앱이 빠르다는 것을 인지시키기 위한 트릭을 알아보자.
- 인스타그램의 목적은 유저들이 좋아하는 것에 집중! 하며 실제로 서버가 그렇게 빠르지 않더라도 더 빨라 보이도록 했다.
- 어떻게?
- 이미지 파일 등을 업로드 하는 경우 지연 시간이 존재하는데 이를 최대한 숨겼다.
- 이미지 업로드 하여, 캡션을 작성하거나 게시 버튼을 누르기 전에 사진이 백그라운드 인스타그램의 서버에 미리 업로드 되도록 했다. ( 업로드를 하는 순간 백그라운드 서버에 저장이 되는 구조 )이를 통해서 유저가 글, 해시태그를 작성하는 동안에 업로드를 진행하면서 업로드가 빠르게 된다고 보여줌.
- 데이터베이스의 경우 최소한을 사용하며, 샤딩을 통해 데이터베이스를 분리하여 대용량의 데이터를 적재
- 복제본과 마스터를 기반으로 읽기 작업에서는 마스터와 복제본을 / 쓰기,변경 작업에서는 마스터로 처리 후 복제본에 공유를 통해서 데이터를 적재
- 캐싱을 이용한 잦은 정보 제공
- 대량의 트래픽이 찾아 오면서 동일한 정보를 요구하는 작업이 있을 수 있다.이런 경우에 캐싱을 통해서 자주 조회되는 정보는 캐시에 저장해두고 이를 유저에게 제공한다.