★★★★★ 맛집 추천사
개발자랑 대화하고 싶으세요? 근데 개발자들 말이 뭔 말인지 모르겠어서 검색해봤더니 검색결과가 더 뭔 소린지 모르겠다고요?
잘 오셨습니다. 이 집은 IT업계의 비개발자들을 위한 개발국밥집입니다. 비개발자들도 이해할 수 있도록 개발자들의 어려운 말들을 훌훌 말아서 속 풀어드립니다.
※ 주의
그런데 저… 음 저 한 가지가 음… 사실 이 집 주인 할머니가 입이 좀 걸으세요…
(제가 얘기했다고는 하지 말아주세요. 막 파리채로 때려요. ㅠㅠ)
1. 웹서비스가 뭔지는 알고 국밥 처묵냐 이눔시키야
아쿠 깜짝이야!
예끼 이눔시키야 언제 들어왔어 이눔아.
이눔아 개발국밥 먹으러 온 겨?
왔으면 싸게싸게 들어오지 왜 문앞에서 그러고 서 있냐, 이 우라질 놈아.
개발자랑 대화하고 싶어서 온 비개발자 아녀?
착보면 착이지 개발국밥 한두 그릇 팔아봐?
그래 잘 왔어.
구글링해봤자 우라질 뭔 소린지 몬알아먹겠는 쉰소리만 잔뜩 나올 겨.
할미한테 파리채로 맞아가면서 배우는 게 더 빨러.
첫 국밥의 재료는 웹서비스여.
일단 ‘웹서비스’라는 게 뭔지 물어보면 대답할 수는 있간?
웹서비스와 RestFul의 의미
“웹서비스를 구축한다.”
– 알쏭달쏭 개발체
http기반 프로토콜(protocol, 규약)을 활용해 네트워크 통신을 구현한다.
– 번역
http라는 이름의 어떤 합의된 규칙에 맞춰 인터넷 되는 페이지를 만든다.
일단 이렇게만 이해하고 넘어가도 전혀 문제 읎어.
모르는 건 차차 설명해 줄 텡께 걱정일랑 접어서 종이비행기로 날려부려라잉.
급하게 먹다 체하믄 할미 매상 떨어진다. 이눔들아.
자, 여기서 이 ‘http 기반의 통신구현’을 근래엔 RestFul 서비스라고 부른다는 사실이 중요한 겨.
RestFul을 검색해보면 뭐라고 나올까잉. “웹의 아키텍쳐 스타일이다” 이렇게 나오지?
옘병… 이래가지고 알아듣겠냐 개발자 이 호로자슥들 거시기를 따가지고 국밥에 썰어넣어버릴라.
먼저 아키텍쳐 스타일이라는 게 대체 뭔말인지부터 보드라고.
아키텍처 스타일/아키텍처 패턴
– 알쏭달쏭 개발체
client/server, P2P 등 서버를 구현하는 방식 및 형태를 포괄하는 의미
* 이는 디자인 패턴과 별개의 개념이다.
– 번역
만약 서버개발이 축구라면 아키텍처 스타일은 플레이 스타일이다. REST는 아키텍처 스타일(플레이스타일)의 하나다. 말하자면 티키타카 같은 거다. 물론 뻥축구나 영혼의 10백 등 다른 방식도 존재한다.
개발방식에 이 REST의 특징들(뒤에 설명)이 들어있기 때문에 RestFul이라고 부른다.
이제 이해가 좀 되는가?
그럼 RestFul이라는 게 아무튼 중요하다니까 뭔지도 알아야지 계속 밥벌어먹고 살지 않간?
할미가 설명해줄테니 싸게 따라오니라. 단, 깍두기 국물 흘리는 자는 죽는 거여.
RestFul 별거 아니다
REST의 6가지 요소
- Client/Server
- Stateless Server
- Cache
- Uniform Interface
- Layer System
- Code on Demand
쫄지 마. 할미의 쉬운 설명 들어간다.
1. Client/Server
– 알쏭달쏭 개발체
클라이언트와 서버가 나눠져 있으며, 서버에서 내려준 것을 클라이언트가 받아 처리하고 다시 요청하는 형태다.
– 번역
옘병할 후라질 놈들 말 더럽게 어렵네! 할미는 그냥 쉽게 깍두기를 예로 들어볼랑께.
- DB(데이터베이스) = 김장독
- 리소스 = 깍두기
- 서버 = 종업원
- 클라이언트 = 깍두기 그릇
손님(유저)이 깍두기(서비스 이용을 위한 요소. 예: 유저가 프로필을 클릭했을 때 깍두기는 사진과 이름 등의 프로필 정보)를 더 달라고 한다.
그럼 깍두기를 김장독(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가지 요소
- Client/Server
- Stateless Server
- Cache
- Uniform Interface
- Layer System
- Code on Demand
필딩이란 양반이 이 6가지 아키텍처 스타일을 하나로 묶어서 붙인 이름이 바로 ‘REST‘. 그래서 이 6가지 스타일을 반영해 만든 걸 RestFul 서비스라고 말하는 겨.
물론 SOAP 등 RestFul 말고 딴 방식도 있고. 말했자녀 뻥축구, 영혼의 10백, 전봇대 축구 다 있다고.
으땨? 별 거 아니제?
말이 어려워서 그렇지 여그도 다 사람 사는 동네여.
원문: 스타트업 하고 앉아있네