brunch

You can make anything
by writing

C.S.Lewis

by 슬로그업 Feb 12. 2016

욕쟁이 할머니네 개발국밥

한 그릇 - "아 그래서 RestFul이 대체 뭐냐고"


★★★★★ 맛집 추천사


개발자랑 대화하고 싶으세요?

근데 개발자들 말이 뭔 말인지 모르겠어서 검색해봤더니 검색결과가 더 뭔 소린지 모르겠다구요?


잘 오셨습니다.

이 집은 IT업계의 비개발자들을 위한 개발국밥집입니다.


비개발자들도 이해할 수 있도록 개발자들의 어려운 말들을 훌훌 말아서 속 풀어드립니다.


※ 주의


그런데 저.. 음 저 한 가지가 음..

사실 이집 주인할머니가 입지 좀 걸으세요..

(제가 얘기했다고는 하지 말아주세요 막 파리채로 때려요 ㅠㅠ)


1. 웹서비스가 뭔지는 알고 국밥 처묵냐 이눔시키야

한 그릇

-

아 그래서 RestFul이 대체 뭐냐고


아쿠 깜짝이야!

예끼 이눔시키야 언제 들어왔어 이눔아.


이눔아 개발국밥 먹으러 온겨?

왔으면 싸게싸게 들어오지 왜 문앞에서 그러고 서있냐 이 우라질놈아.


개발자랑 대화하고 싶어서 온 비개발자 아녀?

착보면 착이지 개발국밥 한두 그릇 팔아봐?


그래 잘 왔어.


구글링 해봤자 우라질 뭔 소린지 몬알아먹겠는 쉰소리만 잔뜩 나올 겨. 할미한테 파리채로 맞아가면서 배우는 게 더 빨러.

-


첫 국밥의 재료는 웹서비스여.

일단 '웹서비스'라는 게 뭔지 물어보면 대답할 수는 있간?

                    


웹서비스와 RestFul 너의 의미


“웹서비스를 구축한다.”


- 알쏭달쏭 개발체

http기반 프로토콜(protocol, 규약)을 활용해 네트워크 통신을 구현한다.


- 번역

http라는 이름의 어떤 합의된 규칙에 맞춰 인터넷 되는 페이지를 만든다.



일단 이렇게만 이해하고 넘어가도 전혀 문제 읎어. 모르는 건 차차 설명해 줄텡께 걱정일랑 접어서 종이비행기로 날려부려라잉.


급하게 먹다 체하믄 할미 매상 떨어진다 이눔들아.

-


자, 여기서 이 ‘http 기반의 통신구현’을 근래엔 RestFul 서비스라고 부른다는 사실이 중요한 겨.


RestFul을 검색해보면 뭐라고 나올까잉.

“웹의 아키텍쳐 스타일이다” 이렇게 나오지?


옘병… 이래가지고 알아듣겠냐 개발자 이 호로자슥들 꼬추를 따가지고 국밥에 썰어넣어버릴라. 


먼저 아키텍쳐 스타일이라는 게 대체 뭔말인지부터 보드라고.



아키텍처 스타일 / 아키텍처 패턴


- 알쏭달쏭 개발체

client/server, P2P 등 서버를 구현하는 방식 및 형태를 포괄하는 의미.

*이는 디자인 패턴과 별개의 개념이다.


- 번역

만약 서버개발이 축구라면 아키텍처 스타일은 플레이 스타일이다.


REST는 아키텍처 스타일(플레이스타일)의 하나다. 말하자면 티키타카 같은 거다. 물론 뻥축구나 영혼의 10백 등 다른 방식도 존재한다.


개발방식에 이 REST의 특징들(뒤에 설명)이 들어있기 때문에 RestFul이라고 부른다.



이제 이해가 좀 되는가?


그럼 RestFul이라는 게 아무튼 중요하다니까 뭔지도 알아야지 계속 밥벌어먹고 살지 않간?


할미가 설명해줄테니 싸게 따라오니라. 단, 깍두기 국물 흘리는 자는 죽는 거여.

     


RestFul 별 거 아니다

-

REST의 6가지 요소


1. Client/Server

2. Stateless Server

3. Cache

4. Uniform Interface

5. Layer System

6. Code on Demand



쫄지마 할미의 쉬운 설명 들어간다


1. Client/Server


- 알쏭달쏭 개발체

클라이언트와 서버가 나눠져 있으며, 서버에서 내려준 것을 클라이언트가 받아 처리하고 다시 요청하는 형태다.


- 번역

옘병할 후라질놈들 말 더럽게 어렵네! 할미는 그냥 쉽게 깍두기를 예로 들어볼랑께.



DB(데이터베이스) = 김장독

리소스 = 깍두기

서버 = 종업원

클라이언트 = 깍두기 그릇



손님(유저)이 깍두기(서비스 이용을 위한 요소. ex: 유저가 프로필을 클릭했을 때 깍두기는 사진과 이름 등의 프로필 정보)를 더 달라고 한다.


그럼 깍두기를 김장독(DB)에서 꺼내 종업원(서버)이 그릇(웹, 안드로이드/아이폰 앱)에 담아 갔다 준다.


쉽쟈잉?


2. Stateless Server


- 뜻

서버가 유저의 상태를 저장하지 않는다.

*세션은 예외.


쉽게 말허믄 유저가 새 정보를 올렸을 때 이게 즉각 나타나면 스테이트 서버여.


그게 아니라 새로고침해야 보이는 방식이면 그게 Stateless 인거여.


페이스북이 Stateless지. 즉각 반영이 안 되제. 해서 서버에 폴링(자료 요청 무한 루프)을 걸어놓고 새 자료가 올라왔는지 10초마다 확인하는 방식이다 이 말이여.


3. Cache


- 뜻

캐쉬를 사용해 클라이언트에서 한번 리소스를 받아오면 다시 요청하지 않는다.


사용자한테 리소스(자료나 정보)를 받을 때는 Blocking, Sending, Waiting, Receiving 이 4가지 절차를 거쳐야 혀.


근데 클라이언트(사용자 컴퓨터)에 캐쉬가 저장돼있음 Blocking만 빼고 다 건너뛰어도 돼.


한마디로 속도가 흐벌라게 빨라진다, 이말이제.


4. Uniform Interface


- 뜻

POST, DELETE, PUT, GET 등 8가지를 주요 메소드(명령어)로 활용한다.


메소드는 명령어라고 이해하고 있으면 돼. 할미가 난제 더 설명해줄랑께.


OPTION, HEAD 이런 얘들은 잘 안 쓰니까 비개발자는 알 필요 전혀~읎어.


POST, DELETE, PUT, GET 얘네 4개만 알면 돼. 그래서 이게 뭐냐고?



POST = 올리기 (서버)

DELETE = 삭제

PUT = 올리기 (클라이언트)

GET = 정보 받기



각각의 단어 의미가 기능이여! 참 쉽쟈잉. 근디 여서 post랑 put은 비슷해보이제?


post는 서버에서, put은 클라이언트에서 처리한다는 차이가 있다고만 알면 돼. 


더 쉽게 얘기하면, put은 ‘수정’ 기능이라고 생각하고 있으면 문제 읎어.



5. Layer System


- 뜻

프록시 서버, 로드밸런서 등을 활용해

정보를 층층이 처리하는 프로세스.


레이어(Layer=층위)라는 말에서 감 잡히제? 프록시서버 등등 이름 어려운 놈들을 층층이 활용해서 정보를 효율적으로 처리한다는 말이여.


우라질! 뭐가 이리 복잡혀.

비개발자는 몰라도 되는 부분이니까 아 그런갑다 하고 넘어가자고.


6. Code on Demand


- 뜻

js, css 파일 등을 서버로부터 받아 클라이언트에서 코드 자체로서 그대로 사용한다.


쉽게 말해 코딩 된 파일을 서버한테 클라이언트가 받아서 그대로 읽는다는 겨.


잘 몰라도 왠지 편할 거 같다 그쟈?


-

REST의 6가지 요소


1. Client/Server

2. Stateless Server

3. Cache

4. Uniform Interface

5. Layer System

6. Code on Demand

-


필딩이란 양반이 이 6가지 아키텍처 스타일을 하나로 묶어서 붙인 이름이 바로 'REST'


그래서 이 6가지 스타일을 반영해 만든 걸 RestFul 서비스라고 말하는 겨.


물론 SOAP 등 RestFul 말고 딴 방식도 있고.

말했자녀 뻥축구, 영혼의 10백, 전봇대 축구 다 있다고.



으땨? 별 거 아니제?

말이 어려워서 그렇지 여그도 다 사람 사는 동네여.


다 묵었는가?




책 소개 보기

http://bit.ly/2xgxhzR


매거진의 이전글 포스팅 제목 짓는 팁
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari