스타벅스, 명동교자 그리고 비동기

다즐링의 이미지

스타벅스, 명동교자 그리고 비동기

칼국수를 먹다가 뜬금없이 스타벅스와 비동기가 떠올랐다.
그리고 마음속으로 웃어준다음에 언젠가 관련된 글을 써야지 라고 생각해두곤 이주만에 이글을 쓰게 된다.
아시겠지만 다른 글들도 드래프트로 남아 있는게 많아서 언제 완성이 될런지는..

조엘이 엄선한 소프트웨어 블로그 29선이란 책에 보면 15장에 스타벅스에서 2단계 커밋을 사용하지 않는 이유라는 글이 있다.
원문은 여기 에서 읽을 수 있는데 읽다 보면 서비스 시스템에 대한 여러가지 생각을 하게 된다.
( 간단하게 요약하자면 스타벅스에서 커피를 주문하고 받는 과정을 웹써버에 접속해서 파일을 받는 과정으로 생각해보면 된다. 사실은 조금 복잡.. )
생각해보면 한국의 명동교자도 아름답고 완벽한 시스템을 구성 했던 것이다.

  • 고객의 입장확인
    고객은 식당밖에서 식당으로 입장한다. 이 때 이미 기다리고 있던 사람이 있다면 큐의 끝에 입력이 되게 된다.
  • 자리 배정
    큐가 비어서 자신의 차례가 돌아오면 고객은 자리를 배정 받는다 ( memory allocation )
    자리를 배정해줌과 동시에 자리 배정을 담당하는 서버는 고객이 배정받은 자리에 가서 음식주문을 받을 것을 요청한다.
  • 음식주문
    음식 주문을 담당하는 서버는 요청받은 고객의 자리에 가서 음식을 주문 받는다.
    명동교자는 선주문시 결제 시스템을 이용하는데 이 때 카드를 사용한다면 카드를 건내주고 기다려야한다.
    결제가 완료되면 음식을 조리 및 배정받은 자리로 배달할 것을 담당서버에게 알려준다.
    • 카드를 사용했다면 바로 결제를 하여 영수증을 주문 담당 서버가 가져다 준다.
      당연히 비동기로 여러개의 카드나 현금을 동시에 처리함을 알수 있다.
  • 자리까지 음식 배달
    배달 서버가 정해진 자리로 음식을 배달 해 준다.
  • 물 리필
    물 리필 서버가 따로 있다. ( 아래의 김치와 면 및 밥 리필도 동일하다. )
    다니면서 물 리필이 필요한 Client 를 찾아서 자동으로 물을 리필 하여 준다.
  • 김치 리필
  • 면 및 밥 리필
  • 청소

맛있는 칼국수를 먹다 보면 이렇게 최적화된 시스템이 아름답게 느껴질정도다.
장시간 관찰하다보면 알겠지만 리필의 하위 클래스의 인스턴스들은 각기 역할을 하다가 클래스를 변경하기도 한다.
물론 자동화된 리필시스템 ( 그것도 리필전용! ) 을 운영함으로서
서비스의 질은 좋지만 웬지 빨리 나가줘야할것 같은 느낌 ( 게다가 자리가 좁다. ) 은 조금 있지만
대부분의 고객들은 서비스에 만족하고 입력대비 ( 인건비? ) 출력 쓰루풋은 매우 크다.
이것은 순전히 맛에 의해서가 아니라 저런 아름다운 시스템에 의해서라는 생각이 든다.

댓글

snowall의 이미지

제가 예전에 썼던 글 중에 비슷한 맥락인 것이 있어서 링크 걸어둡니다. :)

http://snowall.tistory.com/1647

피할 수 있을때 즐겨라! http://melotopia.net/b

다즐링의 이미지

제가 본문중에 링크 걸어둔

스타벅스에서 2단계 커밋을 하지 않는 이유도 읽어보면 재미납니다.

한글번역본의 라이센스가 있어서 올리지는 않았습니다만;;

꼭 책을 빌리셔셔 읽어보세요 ㅎㅎ

------------------------------------------------------------------------------------------------
Life is in 다즐링

sql2의 이미지

명동교자는 가격대가 높습니다. 보통 칼국수가격보다 높죠. 그리고, 말씀처럼 회전율이 매우 높죠. ^^

그렇기 때문에 캐쉬서버, 물리필서버, 김치리필서버, 사리 및 밥 리필 서버 등 세분화할 수 있습니다.

그리고, 지리적인 이점때문에 글로벌 마케팅이 가능합니다. 국내고객대비 일본, 중국고객이 꽤 됩니다.

리얼월드와 헬로우월드는 평행우주속에 있습니다. ^^

유사한 시스템을 갖춘 명동돈까스를 추천합니다.

joone의 이미지

코엑스에 조선호텔에서 운영하는 식당 비슷한 바가 있는데..
음식을 주문하면, 종류(한식, 일식, 중식..) 별로 큐에 있어서 주문을 받고, 큐안에 음식준비가 완료된 주문은 전광판에 표시하는 시스템을 갖고 있습니다. 백화점 지하 식당가에서도 흔히 볼 수 있지요.

거의 10여년전 개장 첫날 갔었는데, 아무리 기다려도 음식이 안나와서 알고 보니, 큐가 차면 이후 주문은 사라져버리더군요.

한 곳으로 주문이 몰리는 스트레스트 테스트를 안했던지 아니면...
음식이 빨리 만들어지는 것을 가정했는지는 알 수 없지만, 그 날은 점심은 아주 늦게 먹었습니다.

RurM8Q9g의 이미지

스타벅스는 시온주의(시오니즘)기업이랍니다..

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.