인프런 커뮤니티 질문&답변

EUNKYUNG JUNG님의 프로필 이미지
EUNKYUNG JUNG

작성한 질문수

비전공자를 위한 진짜 입문 올인원 개발 부트캠프

서버 개요

여러대의 서버프로그램에 대하여

작성

·

443

2

안녕하세요. 
그랩님.. 진짜.. 강의 너무너무 잘듣고있습니다!
공부하다가 ..

이 부분을 설명해주실때 문득 궁금한게 생겼는데요,

지금 설명해주시는부분은 서버컴퓨터 한대에서 서버프로그램들을 가져온다! 이지만, 

(실직적으로 카카오톡회사가 서버관리를 어떻게 하고있는지는 모르겠지만) 만약 카카오톡회사에서 서버를 여러대 관리하고있는데 그게 저희가 어떠한 결과를 요청했을때 응답되어지는 리소스들은 모두 한 서버에서 가져오는게 아니라,
상품정보만 담긴 api서버, 이미지 가지고있는 파일서버 등 여러대를 운용하고 저희한테 응답으로 모든 리소스가 오는 거라고 생각되는데 이게 맞나요?

또..위의 내용이 맞다면,
나중에 백엔드를 구축할때(연습용) 여러대 서버를 구축해서 연습해본다고 가정한다면 저런식으로 aws로 이미지 서버 하나 또.. 막 도커? 같은거로 또 다른 서버 하나 만들어서 요청하는 클라이언트에게 두개의 서버에 저장되어있는 리소스를 전달해보는 형식이 구현 가능할 것 같은데 이렇게 가능한건가용? 그리고 제가 지금까지 한 말이 올바른지도..궁금합니다! 

그리고 또 한가지 더 궁금한점은 , 6분28초에서 개발자들이 미리 서버프로그램을 먼저 작성해야된다고 했는데요. 그럼 저희가 VS코드를 이용해서 폴더에다가 저런 이미지, 상품정보, 웹 같은 리소스들을 다 넣어 놓고 클라이언트로부터 요청이왔을때 응답을 할 수 있게  서버컴퓨터를 만들어놓았다! 라고 이해했는데 맞게 이해한건가요? 

답변 1

1

그랩님의 프로필 이미지
그랩
지식공유자

좋은 질문 감사합니다 ~~!

1. 보통 규모가 커지는 서비스일 수록 여러 서버에서 리소스를 가져오게 됩니다. 예를 들어 카톡 앱에서 대화 내역을 불러온다고 했을 때, 대화내역을 불러오는 서버에 요청을 하면, 대화내역을 불러오는 서버는 여러 정보들을 가져다가 제공하겠죠(그 과정에서 다른 서버들과 또 통신해서 데이터를 가져올 수도 있겟구요). 그리고 파일, 이미지 같은 용량이 큰 미디어 파일들의 경우 URL만 제공받습니다. 그러면 실제로 카톡 앱(클라이언트)에서 다시 파일서버로 요청해서 이미지, 문서 등을 다운받는 구조라고 보시면 될 것 같습니다. 

2. 백엔드를 여러 서버로 운영할 때 클라우드를 사용하면 정말 손쉽게 구축이 가능해지는데요. 예를 들어 이미지 서버는 파일 스토리지(S3)를 사용하면 별다른 구축없이 바로 사용이 가능하며, 데이터베이스도 이미 설치되어있는 서비스를 사용하면 손쉽게 데이터베이스 서버 구축이 가능합니다. 물론 API 서버같이 데이터를 제공해주는 서버들은 직접 개발해야 겠지만요. 그리고 예를 들어 API 서버가 여러개 있는 경우, 사용자(클라이언트)의 요청은 하나의 엔드포인트(URL)로 전송합니다. 그러면 그 엔드포인트를 가진 서버가 이제 API 서버들 중 하나의 서버에 요청을  뿌려주게 됩니다. 이런 키워드를 '로드 밸런서' 라는 키워드로 검색해보시면 될 것 같아요. 실제로 많은 회사가 여러 서버를 띄우고 로드 밸런서를 앞에 둬서 관리합니다

3. API 서버를 개발한다고 하면, 사실 보통 이미지는 이미지 서버(AWS에선 S3 같은 파일 저장소), 상품 정보는 데이터베이스 서버(Mysql 같은)을 따로 저장해두고 나머지를 코드로 작성하게 될 거예요. 웹을 개발한다면 보통 웹 리소스를 코드로 작성하되 다른 정보들은 API 서버와 통신하도록 코드를 짜겠죠. 이런 부분은 수업을 더들으시면 궁금증이 빠르게  해소될 수 있을 것 같아요 :)

EUNKYUNG JUNG님의 프로필 이미지
EUNKYUNG JUNG
질문자

와..정말감사합니다!!👍

EUNKYUNG JUNG님의 프로필 이미지
EUNKYUNG JUNG

작성한 질문수

질문하기