본문 바로가기

스타트업 개발자 채용

블라인드 어플을 만드는 데 필요한 것들-2

블라인드 같은 어플을 만드는데 개발비가 최소 5천, 현실적으로는 4-5억은 들거라고 하는데,

도대체 어플을 만드는데 뭐가 필요하길래 이렇게 돈이 많이 드는 걸까요?

커뮤니티 어플 = 컨텐츠 공유

커뮤니티 어플의 핵심은 소통과 정보 공유입니다.

사용자들끼리 재밌는 글을 올리고 댓글 놀이를 하면서 서로 올린 컨텐츠를 공유할 수 있어야 합니다.

 

기술적으로 이게 어떻게 가능할까요?

처음 사용자들이 블라인드 어플을 다운 받고나서 컨텐츠가 공유되는 과정을 생각해보겠습니다.


사용자 A가 블라인드 어플을 다운 받습니다.

사용자 B도 블라인드 어플을 다운 받습니다.

 

사용자 A가 어플을 통해 글을 작성해서 다른 사용자들에게 보여주려고 합니다.

현재는 글이 사용자 A의 어플에만 존재하는데,

이것을 어떻게 해야 다른 사용자들도 볼 수 있도록 공유할 수 있을까요?

 

먼저 사용자 A의 기기에 글과 사진을 저장해보겠습니다.

 

사용자 B가 새로운 컨텐츠가 있는지 알기 위해서는

다른 사용자들에게 새로운 글이 있는지 물어보고 내용을 받아와야 합니다.

어려운 과정은 생략하고 어떻게 해서 A가 B에게 글의 내용을 보내줬다고 치겠습니다.

이 때 사용자 C가 접속을 했습니다. 

C도 새로운 글을 보기 위해 새로고침을 합니다.

A는 아까 B에게 보냈던 글의 내용을 C에게도 보내줍니다.

만약 새로운 사용자 D가 글을 보고 싶어하는데 A가 어플을 종료했다면 어떻게 될까요?


생각해보면 이런 방식은 굉장히 복잡할 뿐만 아니라 엄청나게 비효율적인 것을 알 수 있습니다.

뿐만 아니라 사용자 A의 모든 컨텐츠를 기기에 저장하기 때문에 용량의 문제도 생길 것이고,

기기 변경을 할 때에도 모든 정보를 옮겨줘야 하는 등 다양한 불편함이 생길 것입니다.

 

그렇기 때문에 이런 컨텐츠는 각 사용자의 기기가 아닌 모든 사용자들이 공통으로 접근할 수 있는 곳에 저장해야 합니다.

 

공동 저장소가 있다고 생각하고 사용자가 컨텐츠를 공유하는 과정을 생각해보겠습니다.

사용자 A가 어플을 통해 글을 작성하고 공동 저장소에 글을 저장해달라고 요청합니다.

사용자 B, C는 다른 사용자들이 올린 글이 있는지 공동 저장소에 새로운 글을 달라고 요청합니다.

나중에 사용자 D도 접속해서 새로운 글을 달라고 공동 저장소에 요청하고 사용자 A의 글을 보게 됩니다.

 

공동 저장소에서 모든 사용자들이 글을 저장해달라는 요청과 글을 달라는 요청을 모두 처리하기 때문에

사용자 A는 한 번 글을 저장소에 저장하고 난 후 따로 할 게 없습니다.

 

이렇게 컨텐츠를 요청 하는 쪽과 컨텐츠에 대한 요청을 받아서 처리하는 쪽으로 나눠서

상호작용하는 모델을 "서버-클라이언트 모델"이라고 합니다.

서버-클라이언트 모델

처음에 앱 스토어에서 블라인드 어플을 다운받았다고 했었죠?

 

사용자는 이 어플의 화면의 조작부를 통해서 컨텐츠를 작성하고 공통 저장소에 요청을 하게 됩니다.

이처럼 사용자의 의도를 입력 받아 명령으로 바꿔주는 어플의 소통 창구를 유저 인터페이스(UI)라고 합니다.

 

UI를 통해 사용자는 컨텐츠를 작성한 후 공통 저장소에 저장 요청을 할 수 있습니다.

이렇게 요청을 보내고 응답을 받는 쪽을 우리는 클라이언트라고 부릅니다.

 

블라인드 회사는 앱 스토어에 어플을 올리기 전

어플이 보내는 요청을 받고 처리할 수 있도록 컴퓨터를 준비합니다.

그리고 이 컴퓨터는 클라이언트가 보내는 요청을 받아서 컨텐츠를 저장하기도 하고 컨텐츠를 응답으로 보내주기도 합니다.

 

이렇게 클라이언트가 보낸 요청을 처리하는 쪽을 서버(server)라고 합니다.1)

컨텐츠를 서빙(serve)한다고 이해하시면 될 것 같습니다.

그리고 이런 컨텐츠를 효율적으로 저장하고 불러올 수 있도록 도와주는 도구를 데이터베이스라고 부릅니다.

(서버와 데이터베이스에 관해서는 후속 글에서 더 자세히 다루겠습니다.)

 

위의 설명을 도식화해서 보면 다음과 같습니다.

서버-클라이언트


이번 글에서는 커뮤니티 서비스에서 어떻게 여러 사용자들 간에 컨텐츠를 공유하는지 살펴보며,

서버-클라이언트 모델에 대해 알아봤습니다.

 

다음 글에서는 이 서버-클라이언트를 조금 더 자세히 알아보며 블라인드 서비스를 만들기 위해 필요한 기술적인 요소들을 보겠습니다.

글이 도움이 되셨다면 공감을 눌러주시고, 궁금하신 점은 댓글로 남겨주시면 보다 자세히 설명 드리겠습니다.


1) 서버는 데이터의 저장과 불러오기 외에도 굉장히 다양한 요청을 처리합니다.