예전에 있던 곳에서는 거의 건드릴수 없던 Cloud Computing(클라우드 컴퓨팅)관련 기술을 요즘 보고 있다.

SI업으로 파견근무를 하다보니 갑님 회사들이 회사 정보를 중요하게 여기는 것도 있고, 정보 통제를 위하여 클라우드 서비스 도입을 할수가 없다만...

지금은 서비스를 만들다 보니, 확장성 있게 저렴한 비용으로 서비스를 어떻게 제공할까 등의 고려를 하다, 클라우드 컴퓨팅 서비스에 대하여 기술 조사중이다.

아래는  2015년 5월 29일에 공개된 윤석찬님의 "AWS와 함께 확장성 높은 천만 사용자 웹 서비스 만들기" 슬라이드

AWS와 함께 확장성 높은 천만 사용자 웹 서비스 만들기


AWS Activate Seminar에서 윤석찬 AWS 테크에반젤리스트께서 발표한 "AWS와 함께 확장성 높은 천만 사용자 웹 서비스 만들기 (모바일 앱을 위한 백엔드)" 입니다




Buy me a coffeeBuy me a coffee
"웹 서비스 개발 철저공략" 책의 내맘대로 평가 및 정리



웹 서비스 개발 철저공략

저자
카츠마 료 지음
출판사
비제이퍼블릭 | 2014-04-09 출간
카테고리
컴퓨터/IT
책소개
린 스타트업 사고방식 가치 있는 서비스를 어떻게 빨리 출시할 것...
가격비교

일본 원서 이름: Webサービス開発徹底攻略 (WEB+DB PRESS plus)    

勝間 亮 (著), 石田 忠司 (著), 杉谷 保幸 (著), 江口 滋 (著), 上谷 隆宏 (著), 青木 俊介 (著), 久保 達彦 (著), 池邉 智洋 (著), 谷口 公一 (著), 田淵 純一 (著), 伊野 友紀 (著), 西岡 拓人 (著), 吉田 俊明 (著), 古旗 雅史 (著), 木野瀬 友人 (著), かなだ まさかつ (著), 牧本 慎平 (著), 成田 一生 (著), 舘野 祐一 (著), 濱崎 健吾 (著), 鈴木 慎之介 (著), 齊藤 宏多 (著), WEB+DB PRESS編集部 (編集)



출판사의 "웹 서비스 개발 철저 공략" 책 소개 링크 http://bjpublic.tistory.com/191


"웹 서비스 개발 철저공략" 책의 내맘대로 평가 및 정리


내맘대로 평가

이 책은 일본사람들이 주로 사용하는 웹서비스인 "쿡패드(クックパッド)", "니코니코동화(ニコニコ動画)", "pixiv", "라이브도어(ライブドア, 이후 Naver Japan 이였다 현재는 Line Cooperation), 2ch에서 개발 및 운영을 하다 생긴 문제나 해결방법 등을 흥미롭게 작성했습니다.

웹 서비스를 제공하는데 사용하는 회사의 인프라스트럭쳐(Infrastructure), 서버, 웹 기술등의 핵심 내용을 짚어나가며 개발 및 운영하다 생긴 문제 및 이슈, 조직 구축 및 운영 및 그리고 시스템 향상을 어떻게 꽤하는지, 모바일 유행에 따라 서비스가 변화에 어떻게 대응했는지 등을 보여줍니다.


이 책에서는 애자일(Agile) 개발 방법론 이야기를 서론에 두고, 일본에서 유명한 웹 서비스들이 어떤식으로 애자일을 적용하여 서비스의 문제점을 개선하여 시스템을 향상시켰는지에 대한 초점을 맞춰서 서술하고 있습니다.

여기서는 기술뿐만 아니라 조직 운영에 대해서도 소개를 하여 개발을 하는데에 협업이 중요하다는 것도 보여줍니다.

(뭐 개발이 혼자서 개발하는 것이 아니라 여러 사람들이 모여서 개발하니깐 협업 중요함)


이 책에서 특이한 사항으로는 제가 모르는 라이브러리(오픈소스 라이브러리이든 상용 라이브러리이든)가 너무 많다는 것이다. 역시 "세상은 넓고 라이브러리는 넘쳐다더라"란 생각을 했습니다.

책에 나오는 라이브러리들을 보면 Perl, Ruby on Rails, PHP쪽 라이브러리가 많이 나오던데, 일본에서는 한국과 다르게 Ruby on Rails, Perl, PHP를 주로 쓰는 경향이 있는 것 같다는 생각을 하였다.


이 책이 좋은 점은 바다 건너 이웃나라인 일본에서 어떻게 웹서비스를 운영하고 개선 향상시키는지에 대한 귀중한 정보들을 얻을 수 있다는 점?


책에 나오는 내용들을 보면 Slideshare등 슬라이드 공유 사이트에서 얼핏 보거나 컨퍼런스 영상에서 들었던 내용들이 나오긴 한데, 이 내용들을 책으로 기술하다보니 정리가 잘 된 느낌이 든다.

만약에, 대형 웹 서비스를 접하고, 운영해본다면 어떻게 운영하겠다는 가이드라인(Guideline)을 제시해주는거라 보면 된다.


책의 단점이라면, 내용이 옛 기술이다보니 완벽하게 이해하는 것보단 어떻게 해결했다 정도 가이드 정도로 봐야한다고 생각합니다, (그래도 웹 서비스의 구축 및 운영 방향제시를 해주는 귀중한 정보를 출판한 것이라 흐름을 관심있게 봐야한다고 생각합니다)


저는 단순 SI(System integration)업을 하는 사람이라 보니 웹서비스들은 어떻게 구축되는지에 대한 호기심을 자극하네요.

SI(System integration)업 특성상, 고객의 필요로 인해 발주받은 내용을 토대로 시스템을 구축을 해주지만, 이후의 운영은 SM(System Management)업 또는 현행부서에서 하다보니 운영에 대한 지식이 거의 전무한데다, 시스템 구축도 주먹구구식 납기일에 맞춰 납기를 하다보니 기술이 딱히 좋은 것도 아니고 -_-;;

SI(System integration)업을 하는 본인으로서는 웹서비스들이 어떻게 구축되고 운영하여 돌아가는지에 대한 지식을 어느정도 알려주는 좋은 책이라고 생각한다.
그리고 SI업 추세가 웹+모바일이기때문에 웹 서비스 구축에 대하여 관심있게 봐야하기때문에 이 책을 꼭 봐야한다고 생각한다고 보는 1인.


여담으로 책을 보다 느끼는 것인데, 일본의 스타트업(startup)기업에서 웹서비스를 처음부터 만들고 대형 웹서비스를 운영하기까지 어떤 과정을 경험했더라는 경험담을 책으로 정리하여 출판하니, 부럽다 정도?

자세한 기술정보를 잡지와 책으로 냈다는 것 자체가 자부심이 있다는 것 같단 생각을 해봄.

일본사람들이 문서화 하는 걸 중요하게 여기는 문화 및 장인정신의 때문에, 일본 업체들의 서비스 문제 및 개선사항에 대한 내용을 일본 잡지나 책에 내놓는 생각을 한다. 그러나 한국에선 이런 서비스 문제 및 개선사항에 대한 내용을 잡지나 책에 낼 수 있을까?

일단 책이라는 것도 수요가 있어야 출판하는것일텐데, 일본은 그래도 수요가 있으니 책을 내겠다만, 한국에선 수요가 한정되어 있다보니 책을 낼수 있을까란 생각을 해본다.


ps. 한국의 대형 포털 2개 업체 중 하나인 NHN에서 "Hello World"(http://helloworld.naver.com/)라는 블로그를 통해서 기술 내용을 소개하고 있고, 다음(Daum)에선 DNA개발자네트워크(http://dna.daum.net/)라는 사이트에서 기술 내용 소개를 하고 있습니다.

ps2. 책을 보다보니 운영체제(Operating System)과 네트워크(Network), 데이터베이스 관리 시스템(DBMS, DataBase Management System)에 대한 지식이 너무 얇음을 느꼈고, 컴퓨터공학과에서 배웠던 위의 내용을 다시 보고 기본기를 쌓을려는 목표를 세웠습니다.




책에서 인상깊은 구절을 적은 내용 정리

린스타트업에 대한 소개

린스타트업에 대한 소개는 아래의 글에 정리를 함.

2014/07/03 - [독서(讀書)] - 린 스타트업(lean startup) 정리



일본에서 유명한 요리 제조 알려주는 웹서비스인 쿡패드

쿡패드는 일본 최대의 요리법 공유 사이트인 동시에 Ruby on Rails로 구축된 일본 최대의 웹 서비스이기도 하다. (생략) 200밀리초 이내에 사용자에게 응답하는 인프라부터, 대규모 서비스임에도 불구하고 단시간에 많은 서비스를 출시할 수 있는 개발 기반, 철저한 사용자 중심 서비스 개발, 효율적인 스마트폰 개발, 울타리를 넘어선 팀 구축 등 모두 놓쳐선 안 될 것들이다.

"DevOps 자체는 Dev와 Ops관계에 대해 이야기 하고 있지만, 그 내용을 비약해 생각해보면 엔지니어에 국한된 것이 아니라 입장이나 전문성이 다른 멤버 간 협력을 위한 연습을 이야기한다고 할 수 있다."

"쿡패드는 엔지니어 수도 늘었고 기술 기반도 향상돼서 수많은 새 기능과 새 서비스를 개발할 수 있었다. 그렇다고 효율적인 서비스 개발의 모든 장벽이 제거된 것은 아니다. 개발 속도는, 단순히 개인의 기술력이나 툴 문제가 아닌, 조직 차원에서 해결해야 할 문제다."


니코니코 동화(ニコニコ動画)

사용자가 동영상 위에 쉽게 댓글을 달 수 있는 서비스 '니코니코 동영상'은 매일같이 애용되고 있는 일본의 웹서비스중 하나다. 2006년에 서비스를 출시한 후 7년 동안 폭발적으로 증가한 사용자 수, 우수한 가용성, 독특한 커뮤니티, 기술력 등 내세울 자랑거리는 많지만, 서비스 출시 당시에는 많은 장애물이 있었다.

애자일 개발 방식과 니코니코 개발

  • 프로세스나 툴보다 사람 간의 상호작용을 중시한다
  • 포괄적인 문서보다 동작하는 소프트웨어를 중시한다
  • 계획상의 협상보다 고객과의 협력을 중시한다
  • 계획을 따르기보다 변화에 대응하는 것을 중시한다


소프트웨어 장인 기질

 장인(匠人)기질 : 장인 사회에 존재하는 특유의 기질. 자신의 기술에 자신이 있고, 완고하지만 근면하고 정직한 성질 - 일본 『코우지엔 5판』(1998, 2004)

職人気質: 職人社会に特有の気質。自分の技術に自信を持ち、頑固だが実直であるというような性質。 - 日本 「広辞苑」(1998, 2004)

장인 기질을 지닌 엔지니어는 자신의 경험이나 주변에서 얻은 정보를 사용해서, 짧은 기간에 실현 가능한 문제 해결법을, DRY원칙(Don't Repeat Yourself)이나 KISS 원칙(Keep It Simple and Small)을 사용해서 빠르게 결정하고, 이를 바탕으로 개발하고, 평가(테스트)한다.

개발해보고 실패해보고 실패하면, 그것을 버리고 다른 방법(평가)으로 도전해본다. 얼핏 시간 낭비로 보일 수 있지만, 실패한 경험은 나중에 유익한 경험으로 선용할 수 있다.

이런 식의 개발 방식은 심플하고 변화에 강하기 때문에 요구 변화에 비교적 빠르게 대응할 수 있다.


pixiv

pixiv는 사용자가 그림을 등록하고 그림과 관련된 다양한 커뮤니케이션을 하는 SNS이다. pixiv서비스 출시부터 주목을 받았고, 사용자 수가 점점 증가해서 결국 서비스를 확장해야했다. 제한된 리소스를 사용해서 나날이 증가하는 트래픽을 제어하기 위해 사용했던 튜닝이나 스케일업/아웃 방법 등 현장에서 일했던 엔지니어들의 노하우를 공개.


"그로부터 5년이 지나 정신을 차려보니 일러스트레이터가 아닌 프로그래머가 돼있었다."

"그림을 하나의 장소에 모아 플랫폼을 만들고 싶다는 열정에 사로잡혀 매일 개발에 몰두한 결과 탄생한 것이 바로 pixiv이다."

시작 당시의 pixiv는 매우 작은 시스템으로 운영됐지만, 사용자 경향이나 의견을 반영해가면서 개발을 통해 사용자 요구를 지원하는 형식으로 많은 기능을 추가했다. 겨로가적으로 대규모 서비스로 발전했다. 튜닝이나 기능 확장 면에서도 많은 고민을 통해 기술 축적을 이루었으며, 낮은 비용으로 서비스 안정화를 도모했다.


라이브도어(Livedoor→Naver Japan→ 현재는 Line Cooperation) 시스템 구축 노하우

라이브도어(Livedoor)는 오픈 소스 소프트웨어를 주로 사용해서 확장 가능한 시스템을 구축하고 있는, 일본 유수의 포털 사이트다.


"새로운 기술을 빠르게 적용하는 것은 엔지니어로서 중요한 임무지만, 한편 오래됐더라도 안정되게 시스템을 운영해 가면서 사업적 요소를 늘려가는 것도 중요한 일이라 생각한다."

"현재 사이트 규모가 작더라도, 몇 주 후 또는 몇 달 후에는 대규모 사이트로 성장할 가능성이 있는 사이트가 많을 것이다."


Yahoo! Japan 메일

PC용으로 개발되서 플래시UI를 가지고 있는 2008년도 당시의 Yahoo!메일(코드명: Hikari)을 살펴보고, 지금까지 진행 중인 개발 뒷단의 숨겨진 이야기를 소개함.

"소프트웨어 고속화에 있어서 중요한 것은 '실측 시간에 기반해야 한다'는 것이다. "

"이렇게 하면 빨라지는 게 아닐까? 이 계산은 의미가 없어 하고 추측만 하지 말고, 해당 코드 처리에 걸리는 시간을 꼭 실측해 보도록 하자. 의외로 1/1000초밖에 걸리치 않는 부분을 고속화하려고 고생하는 경우도 있고, 그 옆에 아무 생각 없이 쓴 코드 한 줄이 몇 초씩 프로그램을 지연시키는 경우도 있다."

"소프트웨어 개발에 있어서 고속화 기법은 누군가에겐 지루할 수 있지만, 쾌적하게 프로그램을 사용할 수 있도록 하는 것은 개발자가 생각하는 것 이상으로 중요하다"


2ch 전송량 줄이기

'2채널'(http://2ch.net)이란 니시무라 씨가 운영하고 있는 일본 최대 규모 커뮤니티 사이트(BBS)(공식적으로 '거대 게시판 집팝')이다.

"현재 광대역 시대가 도래했다고 하지만, 대역 부족은 언제나 고민거리로 이후로도 대역이 콘텐츠를 쫓아갈 수 없는 상태가 계속되리라 생각한다. 막대한 대역 사용료로 날마다 고민하고 있는 사이트 운영자들은 도입을 꼭 검토해보기 바란다."

편집부: "곤란할 때는 전문가를 화나게 화면 되는 거군요.(웃음)"

카나타: "(기술자 중에는) 승부욕이 강한 사람이 많으니까요.(웃음)"



ps. 니코니코(ニコニコ)란 한국어의 '싱글벙글'과 비슷한 의미로, 웃는 모습을 나타내는 일본어라고 하는군요. 새롭게 안 사실.

ps2. 일본 대형 웹서비스 업체의 사례를 보고 들으니, 나도 대형 웹서비스를 구축 및 운영해보고 싶단 생각이 든다. 단순 SI업무만 하다보니 계속 정체되는 느낌이랄까? 뜻과 목표는 높은데, SI업 특성상 단순 서비스 구축에만 신경쓰기 때문에 그런지 쓰던 기술만 계속 쓰는 느낌이 든다. 책을 보고 자극 받아서 계속 발전하고 싶다.

ps3. 나름 책을 읽고 정리하였으니, 책을 읽고 느낀 점을 마구잡이로 쓴거라 책을 다시 읽고 정리해야겠음.

Buy me a coffeeBuy me a coffee

아래의 URL들은 Spring Security에서 가상 URL로 처리하는 URL이며, 서블릿 필터 처리 과정에서 감시 되고 처리된다.

위와 같은 URL은 웹 어플리케이션의 Context ROOT에 대해 상대 경로를 가진다.


  • /j_spring_security_check
    사용자명/비밀번호 폼 인증을 위해 UsernamePasswordAuthenticationFilter를 통해 확인함.
  • /j_spring_openid_security_check
    (OpenID Provider에 의해) 반환되는 OpenID 인증을 위해 OpenIDAuthenticationFilter를 통해 확인함.
  • /j_spring_cas_security_check
    CAS SSO 로그인으로부터 돌아옴과 동시에 CAS 인증에서 사용됨
  • /spring_security_login
    auto-generate 로그인 페이지를 사용하도록 설정할때 DefaultLoginPageGeneratingFilter에서 사용하는 URL
  • /j_spring_security_logout
    로그아웃 액션을 감지하기 위해 LogoutFilter에서 사용하는 URL
  • /saml/SSO
    SAML SSO 사인 온 요청을 처리하기 위해 스프링 시큐리티 SAML SSO 확장 SAMLProcessingFilter에서 사용하는 URL
  • /saml/logout
    SAML SSO 사인 아웃 요청을 처리하기 위해 스프링 시큐리티 SAML SSO 확장 SAMLLogoutFilter에서 사용하는 URL
  • /j_spring_security_switch_user
    사용자를 다른 사용자로 전환하기 위해 SwitchUserFilter에서 사용하는 URL
  • /j_spring_security_exit_user
    사용자 변경 기능을 빠져나가기 위해 사용하는 URL


Buy me a coffeeBuy me a coffee

스프링 프레임워크(Spring Framework)에서 빈(Bean)의 생활 주기(Life Cycle)


Java Bean을 자바섬의 커피콩으로 생각하면...... -ㅁ-

Buy me a coffeeBuy me a coffee




웹개발자를위한대규모서비스를지탱하는기술
카테고리 컴퓨터/IT > 프로그래밍/언어 > 웹프로그래밍 > 웹프로그래밍일반
지은이 이토 나오야 (제이펍, 2011년)
상세보기


일본에서 매우 유명한 웹 서비스 업체(쉽게 말해서 다음, 네이버와 같은 대형 포털)인 하테나(Hatena,はてな)의 CTO와 엔지니어가 쓴 "웹 개발자를 위한 대규모 서비스를 지탱하는 기술"이 한국에 번역되어 출간된다군요.

저는 커피닉스에서  [공동구매] 웹 개발자를 위한 대규모 서비스를 지탱하는 기술 링크를 보고 책을 구입하게 되었습니다.


이 책은 하테나(Hatena)사의 인턴들에게 인턴십과정중에서 수행되는 실제 기술 강의를 기반으로 구성되어 있습니다.

대규모 서비스 개발과 운영을 다룬 책인데 한국에서 이런 책을 찾기가 가뭄에 콩나물 보듯 어렵다 보니 관심이 갑니다.

(참고로 2009년 5월 12일자로 커피닉스 공동구매로 구입한 "서버/인프라를 지탱하는 기술"이란 책도 일본의 유명인터넷 업체인 하테나(Hatena,はてな)와 KLab의 서버 운영 노하우를 기술한 책으로 지금 소개할 책과 비슷합니다.)


서버인프라를지탱하는기술24시간365일
카테고리 컴퓨터/IT > 데이터베이스 > SQL서버 > SQL서버일반
지은이 이토 나오야 (제이펍, 2009년)
상세보기


아직 2011년 3월 2일 발매라 아직 책을 얻지 못했지만, 도서 설명 내용을 보니 네이버나 다음, 구글, 페이스북과 같은 대규모 웹서비스를 운영하는 회사의 노하우가 들어갔다는 생각을 합니다.

아래는 책의 목차입니다.


1 대규모 서비스 개발 오리엔테이션 -전체 그림 파악하기

강의 0 책의 근본 - 책에서 설명하는 것과 설명하지 않는

강의 1 대규모 서비스와 소규모 서비스

강의 2 계속 성장하는 서비스와 대규모화의

강의 3 서비스 개발의 현장


2 대규모 데이터 처리 입문 - 메모리와 디스크, 애플리케이션과 부하

강의 4 하테나 북마크의 데이터 규모 - 데이터가 많을수록 처리에 시간이 걸린다

강의 5 대규모 데이터 처리의 어려운 메모리와 디스크

강의 6 규모조정의 요소

강의 7 대규모 데이터를 다루기 위한 기초지식


3 OS 캐시와 분산 - 대규모 데이터를 효율적으로 처리하는 원리

강의 8 OS 캐시 구조

강의 9 I/O 부하를 줄이는 방법

강의 10 국소성을 살리는 분산


4 DB 스케일아웃 전략 - 분산을 고려한 MySQL 운용

강의 11 인덱스를 올바르게 운용하기 분산을 고려한 MySQL 운용의 대전제

강의 12 MySQL 분산 확장을 전제로 시스템 설계

강의 13 MySQL 스케일아웃과 파티셔닝


5 대규모 데이터 처리 실전 입문 - 애플리케이션 개발의 급소

강의 14 용도특화형 인덱싱 대규모 데이터를 능수능란하게 다루기

강의 15 이론과 실전 양쪽과의 싸움


6 [과제] 압축 프로그래밍 - 데이터 크기, I/O 고속화와의 관계 인식하기

강의 16 [과제] 정수 데이터를 컴팩트하게 가져가기

강의 17 VB Code 속도감각

강의 18 과제에 대한 상세설명과 응답 사례


7 알고리즘 실용화 - 가까운 예로 보는 이론ㆍ연구의 실전 투입

강의 19 알고리즘과 평가

강의 20 하테나 다이어리의 키워드 링크

강의 21 하테나 북마크의 기사 분류


8 [과제] 하테나 키워드링크 구현 - 응용으로 가는 깨닫기

강의 22 [과제] 하테나 키워드 링크 만들기

강의 23 응답 사례와 사고방식


9 전문 검색기술 도전 - 대규모 데이터 처리의 노하우

강의 24 전문 검색기술의 응용범위

강의 25 검색 시스템의 아키텍처

강의 26 검색엔진의 내부구조


10 [과제] 전문 검색엔진 작성 - 기초, 상세부분 작성, 속도와 정확성 추구

강의 27 [과제] 하테나 북마크 전문 검색 만들기

강의 28 응답 사례와 사고방식


11 대규모 데이터 처리를 지탱하는 서버/인프라 입문 - 서비스의 백엔드

강의 29 엔터프라이즈 vs. 서비스

강의 30 클라우드 vs. 자체구축 인프라


12 확장성 확보에 필요한 사고방식 - 규모 증대와 시스템 확장

강의 31 계층과 확장성

강의 32 부하 파악, 튜닝


13 다중성 확보, 시스템 안정화 - 100% 근접한 가동률을 실현하는 원리

강의 33 다중성 확보

강의 34 시스템 안정화

강의 35 시스템 안정화 대책


14 효율향상전략 - 하드웨어의 리소스 사용률 높이기

강의 36 가상화 기술

강의 37 하드웨어와 효율향상 저비용을 실현하는 요소기술


15 서비스와 네트워크 - 서비스의 성장

강의 38 네트워크 분기점

강의 39 한층 높은 단계로


특별편 현대 서비스 구축에 필요한 실전 기술 - 대규모 서비스에 대응하기 위해서

Special 강의 1 작업큐(Job-Queue) 시스템 TheSchwartz, Gearman

Special 강의 2 스토리지 선택 RDBMS key-value 스토어

Special 강의 3 캐시 시스템 Squid, Varnish

Special 강의 4 계산 클러스터 Hadoop



일단은 책을 받아 읽고보고 나서야 소감을 쓸수 있을것 같다.


ps1. 책의 목차를 보니 체계적으로 정리된듯 하다. 인터넷에서 수박 겉핥기로 알고 있는 내용들이 정리된다는 느낌? 

ps2. 한국의 웹서비스 회사에서 이런 노하우를 책으로 공개할 수 있을까?


Buy me a coffeeBuy me a coffee

+ Recent posts