Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
좌충우돌 SNS 솔루션 만들기
㈜써니베일 김성박
써니베일

스티브 잡스와 위즈니악이 애플을
처음 만든 곳.
실리콘벨리!!
http://www.sunnyvale.co.kr
김성박 소개
리눅서
프로그래머
15년. IT 강사
IT 컨설턴트
책 집필
써니베일 대표
회사를 차리는 목적!
• 자아실현
• 사회공헌
• 목적지향
STARTUP vs Venture
• 스타트 업은 환경이 갖춰진 상황에서 빠르
게 성과를 낼 목적으로 만들어진 팀. 3개월
에서 6개월안에 성과를 내도록 한다. 린스
타트업과 같은 방법이 효과적.
• 1년 6개월이 지난...
시작과 완성

몇 개월이면 완성될 줄 알았는데…… 웹만 1년 6개월 걸림
사람을 너무 믿지 말자.
• 사람에게 모든 것을 맡긴다고 해서 결과가
다 잘 나오는 것은 아니다.
• 함께 무엇인가를 만들어 나가겠다면, 작은
시스템(즉 방법론)을 도입해라. 전통적인
밥법론이어도 괜찮다. 방법론이 도입...
간단한 서비스에서 솔루션으로!
• 서비스가 안 된다면 어떻게 할거야?
• 이왕 만드는 거 제대로 만들어서 솔루션화
하면 안될까?
• 우리는 가르치는 일도 하니깐, 업계에서 가
장 많이 사용하는 기술을 사용하는 것이 좋
...
아키텍처에 대한 고민
• 작은 회사는 비용이 많이 드는 아키텍처를
선택한다.
• 작은 회사는 마케팅도 하기 어렵기 때문!
• 반면에 큰 회사는 비용을 아낄 수 있는 아키
텍처를 고민해야 한다.
• 큰 회사들은 이미 고객...
SNS 웹 솔루션을 위한 아키텍처
• 초기 아키텍처
–
–
–
–

MongoDB + SpringDATA
Spring Security
Spring
Spring MVC

–
–
–
–
–
–

Hibernate + MyS...
아키텍처
브라우져

Spring Security

보안설정

Vert.x

Spring MVC

Controller

Socket.io Module

JSP

Verticle

Spring

Service

Hibern...
Spring
• 당신이 개발자의 아내라면 “Spring”이 봄을 뜻
하는 것이 아닌 것을 알 것이다.
• EJB이후 경량컨테이너와 관련된 프레임워크
는 여러 가지가 등장했지만, Spring과 경쟁할
만한 상대는 없는 것...
Spring Security - 단점
• 아시지(Acegi)시큐리티로 시작해서 스프링 프레임워크에 나중
에 참여하게 된 라이브러리인데 배우기가 너무 어렵다!
• 제대로 사용하고 있다고 말할만한 레퍼런스를 찾는 것도 힘들...
Spring Security - 장점
• 프레임워크에 주요부분으로 재설계된 스프링 시큐리티 3.0을
익히고 솔루션에 적용하면서 솔루션에 정교한 인증과 시스템
리소스에 대한 접근 제어를 체계적이고 일관성있게 시스템에
적용...
Hibernate vs MyBatis
• MyBatis는 SQL Mapper인 기술로 배우기도
쉽고 사용하기도 쉽다.
• Hibernate는 ORM기술로 배우기가 어렵다. 그
리고, SQL로 직접 쿼리를 날리는 것이 아...
트랜드로 바라본 Hibernate & MyBaits
Hibernate - 단점
• 익숙해지기 까지가 힘들고, OSIV, 트랜잭
션 처리 등 이해해야 할 것이 많음. 이해를
했다 하더라도 적용이 어려움.
• 만들어져 있는 스키마와 100% 호환이 안됨.
• 도메인을 다 작...
Hibernate - 장점
• 익숙해지면 새로운 도메인을 기획하고, 관계적용하고,
Repository 작성하는 게 매우 빨라짐. 신남!
• 생각자체가 객체화 되기 때문에 DBMS관점에서 생각
할 때 보다 유연하고 빠르다...
Hibernate와 캐시를 적극이용
• SNS솔루션의 경우 글과 사용자, 사용자와
사용자간에 다양한 관계가 사용됩니다. 다
양한 서브쿼리와 JOIN문이 사용될 경우가
많다.
• 반복적으로 호출되는 서브쿼리는 별도의
메소...
Spring Social
• 담점은 커스터마이징이 어렵다. 서비스가
복잡해질 경우, 소스를 고쳐야 할 부분이 많
다. 커스터마이징을 염두에 두지 않고 만든
것 같은 만든 것 같은 생각이 듬. „차라리 그
냥 만들까?‟ ...
Vert.x vs Node.js

출처 : http://vertxproject.wordpress.com/2012/05/09/
vert-x-vs-node-js-simple-http-benchmarks/
Vert.x 를 사용한 이유
• 쉽게 확장 가능하고 비동기의 병렬 어플리
케이션을 위한 차세대 프레임워크
• 다양한 언어 지원. 특히 자바언어를 지원.
• Spring에 임베디드하게 사용할 수도 있음.
• Standal...
Redis
• "REmote DIctionary System"의 약자로 메모
리 기반의 Key/Value Store
• 성능은 memcached에 버금가면서 다양한 데
이타 구조체를 지원함으로써 Message Queue...
Vert.x 와 Redis를 이용한 Push서버 구현
– 알림, 채팅 구현
프로젝트 관리 도구
•
•
•
•

Trello
Redmine
Google 칼린더
현재는 우리가 만든 sns솔루션을 사용 중
Trello
• 깔끔한 UI. 한눈에 보이는 스토리.
• 구글 계정으로 로그인 가능
• 여러 사람이 함께 작업하는 스토리일 경우,
누가 얼만큼 일을 하고 있는지 알기가 어렵
다.
• 검색이 되지만, 검색된 결과를 확인이...
Trello 1/3
Trello 2/3
Trello 3/3

스토리란 단어로 검색한 결과 화면
Redmine
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•

설치형
다중 프로젝트 지원
유연한 역할기반 접근제어
유연한 이슈추적 기능
간트 차트와 달력기능 제공
알림, 문서, 파일관리기능 제공
이메일 알람기능
...
Redmine 1/2
Redmine 2/2

스토리란 단어로 검색한 결과 화면
Google 칼린더
프로젝트 관리 도구 그리고……
• 프로젝트 관리 도구가 도입된 이유는?
• 사람을 관리 하기 위하여! – 일을 하는 것은 사
람
• 현재 프로젝트가 어떻게 진행되는지 궁금하니
깐!
• 알아서 일 잘하는 사람은 프로젝트 ...
사내 SNS솔루션을 이용

타임 라인 하나만으로도 프로젝트 관리가 가능함. 그 이유는?
함께 일하는 사람? 그리고 프로젝트 도구
• 혼자서 일하지 않는다면, 개인보다 팀을 더
중요하게 생각해야 함.
• 팀을 위하여 희생하란 것이 아님.
• 팀이 함께 정한 규칙은 지키라고 있는 것.
• 내 옆에 있는 사람에...
CTIP 환경
• CTIP 이란?
– Continuous Test & Integration Platform

•
•
•
•
•

Jenkins + Maven
Test ? 일부만 자동, 대부분 수동으로 Test.
Test...
1년 6개월 후.
•
•
•
•
•
•

우리는 스타트업이 아니라는 자각.
독한 마음 먹지 않았다면 창업하지 마세요.
구성원 중에 한 명이 결혼 예정.
“자아실현”보다 더 중요한 것?
생존. 확장. 부흥 – 앞으로 1년...
스타트업을 한다면? 1/2
•
•
•
•

시작부터 모두를 만족시킬 수는 없다.
있었으면 좋겠어? 는 없어도 된다는 뜻.
범용적인 것은 마케팅비가 많이 필요하다.
누군가에게 꼭 필요한 서비스.
스타트업을 한다면? 2/2
• 우물을 판다!
• 우물은 넓어질 수 있을까?
서비스를 원하는 정도

서비스를 원하는 사람
사내 스타트업?
• 오버 테크놀로지로 개발 하다 보니 개발자
들은 자신감이 상승.
• 오랫동안 함께 서비스와 솔루션을 고민하
다 보니, 새로운 아이디어들이 막 샘솟음!
• 3 개월 – 회사 솔루션 개발
• 1 개월 – ...
데모 - SNS솔루션(웹 버젼)
• http://www.yacamp.com 캠핑사이트
• http://www.codenuri.com 개발자커뮤니티
– 안드로이드, Spring, Spring Security, Spring...
써니베일에 방문해주세요.
• https://www.facebook.com/sunnyvalesoft
• http://www.sunnyvale.co.kr
감사합니다.
Upcoming SlideShare
Loading in …5
×

[Spring Camp 2013] 좌충우돌 Sns 솔루션 만들기

6,205 views

Published on

Spring Camp 2013
2013년 10월 13일
좌충우돌 SNS솔루션 만들기란 주제로 발표한 자료입니다.

Published in: Technology
  • Be the first to comment

[Spring Camp 2013] 좌충우돌 Sns 솔루션 만들기

  1. 1. 좌충우돌 SNS 솔루션 만들기 ㈜써니베일 김성박
  2. 2. 써니베일 스티브 잡스와 위즈니악이 애플을 처음 만든 곳. 실리콘벨리!! http://www.sunnyvale.co.kr
  3. 3. 김성박 소개 리눅서 프로그래머 15년. IT 강사 IT 컨설턴트 책 집필 써니베일 대표
  4. 4. 회사를 차리는 목적! • 자아실현 • 사회공헌 • 목적지향
  5. 5. STARTUP vs Venture • 스타트 업은 환경이 갖춰진 상황에서 빠르 게 성과를 낼 목적으로 만들어진 팀. 3개월 에서 6개월안에 성과를 내도록 한다. 린스 타트업과 같은 방법이 효과적. • 1년 6개월이 지난 후, 우리는 스타트업이 아니라 벤처라는 것을 깨달음. 그러니 투자 하겠다는 사람이 없지!!!
  6. 6. 시작과 완성 몇 개월이면 완성될 줄 알았는데…… 웹만 1년 6개월 걸림
  7. 7. 사람을 너무 믿지 말자. • 사람에게 모든 것을 맡긴다고 해서 결과가 다 잘 나오는 것은 아니다. • 함께 무엇인가를 만들어 나가겠다면, 작은 시스템(즉 방법론)을 도입해라. 전통적인 밥법론이어도 괜찮다. 방법론이 도입되기 어렵다면 일정을 확실히 진행시키는 리더 가 필요하다. • 마감은 어길 수 있어도, 마감이 있어야 일은 진행된다.
  8. 8. 간단한 서비스에서 솔루션으로! • 서비스가 안 된다면 어떻게 할거야? • 이왕 만드는 거 제대로 만들어서 솔루션화 하면 안될까? • 우리는 가르치는 일도 하니깐, 업계에서 가 장 많이 사용하는 기술을 사용하는 것이 좋 을 것 같은데? 나중에 컨설팅 할 수도 있잖 아? • 할 줄 아는 것이 많으면?
  9. 9. 아키텍처에 대한 고민 • 작은 회사는 비용이 많이 드는 아키텍처를 선택한다. • 작은 회사는 마케팅도 하기 어렵기 때문! • 반면에 큰 회사는 비용을 아낄 수 있는 아키 텍처를 고민해야 한다. • 큰 회사들은 이미 고객을 확보하고 있을 수 도 있고, 마케팅 비도 많이 쓸 수 있기 때문
  10. 10. SNS 웹 솔루션을 위한 아키텍처 • 초기 아키텍처 – – – – MongoDB + SpringDATA Spring Security Spring Spring MVC – – – – – – Hibernate + MySQL Spring Security Spring Spring MVC (json, ajax 포함) Spring Social Vert.x + Redis + ajax • 후기 아키텍처
  11. 11. 아키텍처 브라우져 Spring Security 보안설정 Vert.x Spring MVC Controller Socket.io Module JSP Verticle Spring Service Hibernate Repository Database Redis
  12. 12. Spring • 당신이 개발자의 아내라면 “Spring”이 봄을 뜻 하는 것이 아닌 것을 알 것이다. • EJB이후 경량컨테이너와 관련된 프레임워크 는 여러 가지가 등장했지만, Spring과 경쟁할 만한 상대는 없는 것 같습니다. • 기업 등에서 가장 많이 사용하는 JAVA프레임 워크이고 이 말은 우리가 Spring을 잘 알면 써 먹을 곳이 많다는 것을 의미합니다. • Spring을 잘 한다면 누군가를 가르칠 기회도 많고, 컨설팅도 할 수 있으며, 심지어 SI에서 사용할 기회도 많습니다. 그야말로 짱!
  13. 13. Spring Security - 단점 • 아시지(Acegi)시큐리티로 시작해서 스프링 프레임워크에 나중 에 참여하게 된 라이브러리인데 배우기가 너무 어렵다! • 제대로 사용하고 있다고 말할만한 레퍼런스를 찾는 것도 힘들 다. • 기술 소개 문서도 튜토리얼 예제 수준을 벗어나지 못하고 잘못 사용하고 있는 내용의 글과 예제들도 상당히 많다. • 제대로 사용하고 특정 요구조건을 충족하기 위해서는 스프링 시큐리티의 내부 로직을 깊이 알아야 한다. 깊이 알려고 하면 또 하나의 우주가 열린다. • 보안 관련 개발자가 아닌 이상 익숙치 않은 보안에 대한 다양한 개념과 프로토콜을 익혀야 하는 어려움도 있다.
  14. 14. Spring Security - 장점 • 프레임워크에 주요부분으로 재설계된 스프링 시큐리티 3.0을 익히고 솔루션에 적용하면서 솔루션에 정교한 인증과 시스템 리소스에 대한 접근 제어를 체계적이고 일관성있게 시스템에 적용 가능할 수 있었다. • SSL, Open ID프로바이더, 싱글사인온, Oauth등의 기술들을 자 세한 내용을 모르더라도 가능한 빨리 실무에서 해결할 수 있었 다. (스프링 소셜 적용 등) • 프로젝트 처음에는 서비스 개발이었으나 솔루션으로 방향이 바뀌었는데, 솔루션에 적용할 다양한 상황에 맞는 유연한 인증 과 접근제어 시스템을 구현할 수 있었다. • 솔루션이 가져야 할 확장성과 유연성 있는 소프트웨어를 만들 려면 어떻게 해야 할지에 대한 방법을 학습할 수 있는 좋은 기 회였다.
  15. 15. Hibernate vs MyBatis • MyBatis는 SQL Mapper인 기술로 배우기도 쉽고 사용하기도 쉽다. • Hibernate는 ORM기술로 배우기가 어렵다. 그 리고, SQL로 직접 쿼리를 날리는 것이 아니기 때문에 복잡한 쿼리인 경우 성능에 문제가 있 을 수도 있다. • 하지만, Hibernate를 사용하기로 결정! • 주변 지인들의 적극적인 추천(지인들이 Hibernate에 대한 달인들) – 잘 안되면 밥 라이 선스로 물어봐야지! • 폼 나니깐!!
  16. 16. 트랜드로 바라본 Hibernate & MyBaits
  17. 17. Hibernate - 단점 • 익숙해지기 까지가 힘들고, OSIV, 트랜잭 션 처리 등 이해해야 할 것이 많음. 이해를 했다 하더라도 적용이 어려움. • 만들어져 있는 스키마와 100% 호환이 안됨. • 도메인을 다 작성해서 서비스를 하다가 도 메인 코드상에서 해당 칼럼을 지워도 DB상 에선 자동반영이 안 되는 경우가 있음
  18. 18. Hibernate - 장점 • 익숙해지면 새로운 도메인을 기획하고, 관계적용하고, Repository 작성하는 게 매우 빨라짐. 신남! • 생각자체가 객체화 되기 때문에 DBMS관점에서 생각 할 때 보다 유연하고 빠르다. • CRITERIA를 통해 쿼리를 구성할 경우 유지보수가 편 해진다. 예를 들어 Join절이 추가되거나 Where절이 변 할 때 코드를 보며 해당하는 코드를 금방 찾아서 변경할 수 있다. • Query를 몰라도 된다. 하지만, 성능을 고려한다면 Hibernate가 자동생성하는 쿼리가 어떻게 나올지 예측 할 수 있어야 한다. 결국, Query는 Hibernate를 사용하 더라도 잘 알아야 한다. DBMS에 대하여 잘 알아야 한 다.
  19. 19. Hibernate와 캐시를 적극이용 • SNS솔루션의 경우 글과 사용자, 사용자와 사용자간에 다양한 관계가 사용됩니다. 다 양한 서브쿼리와 JOIN문이 사용될 경우가 많다. • 반복적으로 호출되는 서브쿼리는 별도의 메소드로 만들어 캐싱하여 사용하도록 하 여 성능을 향상시킴.
  20. 20. Spring Social • 담점은 커스터마이징이 어렵다. 서비스가 복잡해질 경우, 소스를 고쳐야 할 부분이 많 다. 커스터마이징을 염두에 두지 않고 만든 것 같은 만든 것 같은 생각이 듬. „차라리 그 냥 만들까?‟ 하는 생각이 들 정도. • 잠점은 적용이 쉬움. Maven에 Spring Social관련 추가하고 설정만 약간 수정하면 스프링 소셜이 대부분 알아서 해주기 때문 에 매우 간단히 적용 가능함.
  21. 21. Vert.x vs Node.js 출처 : http://vertxproject.wordpress.com/2012/05/09/ vert-x-vs-node-js-simple-http-benchmarks/
  22. 22. Vert.x 를 사용한 이유 • 쉽게 확장 가능하고 비동기의 병렬 어플리 케이션을 위한 차세대 프레임워크 • 다양한 언어 지원. 특히 자바언어를 지원. • Spring에 임베디드하게 사용할 수도 있음. • Standalone으로 동작할 수도 있음. • Socket IO 모듈이 존재함 (백기선씨 감사!) • Node.js에 비하여 성능이 좋음
  23. 23. Redis • "REmote DIctionary System"의 약자로 메모 리 기반의 Key/Value Store • 성능은 memcached에 버금가면서 다양한 데 이타 구조체를 지원함으로써 Message Queue, Shared memory, Remote Dictionary 용도로도 사용가능 • 간단한 구조로 버그가 발생할 가능성이 적음. • Vert.x 를 이용한 클러스터링 보다 Redis 클러 스터링이 훨씬 간편하다고 판단 • publish/subscriber 지원
  24. 24. Vert.x 와 Redis를 이용한 Push서버 구현 – 알림, 채팅 구현
  25. 25. 프로젝트 관리 도구 • • • • Trello Redmine Google 칼린더 현재는 우리가 만든 sns솔루션을 사용 중
  26. 26. Trello • 깔끔한 UI. 한눈에 보이는 스토리. • 구글 계정으로 로그인 가능 • 여러 사람이 함께 작업하는 스토리일 경우, 누가 얼만큼 일을 하고 있는지 알기가 어렵 다. • 검색이 되지만, 검색된 결과를 확인이 어렵 다.
  27. 27. Trello 1/3
  28. 28. Trello 2/3
  29. 29. Trello 3/3 스토리란 단어로 검색한 결과 화면
  30. 30. Redmine • • • • • • • • • • • • • • • 설치형 다중 프로젝트 지원 유연한 역할기반 접근제어 유연한 이슈추적 기능 간트 차트와 달력기능 제공 알림, 문서, 파일관리기능 제공 이메일 알람기능 프로젝트별 위키 페이지 제공 프로젝트별 게시판 기능 제공 형상 관리 소프트웨어와의 통합(SVN, CVS, Git, Mercurial, Bazaar, Darcs) 다중 LDAP 기반 인증 지원 다국어지원 여러 데이터베이스 지원 플러그인 기능 지원 트렐로와는 다르게 한눈에 스토리의 상황을 보기 어렵다.
  31. 31. Redmine 1/2
  32. 32. Redmine 2/2 스토리란 단어로 검색한 결과 화면
  33. 33. Google 칼린더
  34. 34. 프로젝트 관리 도구 그리고…… • 프로젝트 관리 도구가 도입된 이유는? • 사람을 관리 하기 위하여! – 일을 하는 것은 사 람 • 현재 프로젝트가 어떻게 진행되는지 궁금하니 깐! • 알아서 일 잘하는 사람은 프로젝트 관리도구 도 잘 사용함. 그래서 일에 방해됨!!!!!!! • 관리하기 위한 대상은 프로젝트 관리도구도 잘 사용하지 않음. • 스타트업 & 벤처에서 가장 중요한 것은 사람.
  35. 35. 사내 SNS솔루션을 이용 타임 라인 하나만으로도 프로젝트 관리가 가능함. 그 이유는?
  36. 36. 함께 일하는 사람? 그리고 프로젝트 도구 • 혼자서 일하지 않는다면, 개인보다 팀을 더 중요하게 생각해야 함. • 팀을 위하여 희생하란 것이 아님. • 팀이 함께 정한 규칙은 지키라고 있는 것. • 내 옆에 있는 사람에게 소중한 사람이 되려 면 어떻게 해야 할까? – 믿음. 신뢰. • 믿음. 신뢰가 있는 사람들은 어떤 도구도 상 관이 없다.
  37. 37. CTIP 환경 • CTIP 이란? – Continuous Test & Integration Platform • • • • • Jenkins + Maven Test ? 일부만 자동, 대부분 수동으로 Test. Test를 제대로 못하는 이유? 요구사항이 너무 자주 바뀐다! – 해결책은? 스크럼을 사용한다면? 백로그, 스프린트!
  38. 38. 1년 6개월 후. • • • • • • 우리는 스타트업이 아니라는 자각. 독한 마음 먹지 않았다면 창업하지 마세요. 구성원 중에 한 명이 결혼 예정. “자아실현”보다 더 중요한 것? 생존. 확장. 부흥 – 앞으로 1년 6개월 주제. 롤 모델 : 호주회사 아틀라시안
  39. 39. 스타트업을 한다면? 1/2 • • • • 시작부터 모두를 만족시킬 수는 없다. 있었으면 좋겠어? 는 없어도 된다는 뜻. 범용적인 것은 마케팅비가 많이 필요하다. 누군가에게 꼭 필요한 서비스.
  40. 40. 스타트업을 한다면? 2/2 • 우물을 판다! • 우물은 넓어질 수 있을까? 서비스를 원하는 정도 서비스를 원하는 사람
  41. 41. 사내 스타트업? • 오버 테크놀로지로 개발 하다 보니 개발자 들은 자신감이 상승. • 오랫동안 함께 서비스와 솔루션을 고민하 다 보니, 새로운 아이디어들이 막 샘솟음! • 3 개월 – 회사 솔루션 개발 • 1 개월 – 자유 프로젝트
  42. 42. 데모 - SNS솔루션(웹 버젼) • http://www.yacamp.com 캠핑사이트 • http://www.codenuri.com 개발자커뮤니티 – 안드로이드, Spring, Spring Security, Spring MVC, JAVA 등에 대한 강좌를 올리고 스터디 팀을 만들어 스터디를 진행 하려고 합니다. 관 심 가져주세요.
  43. 43. 써니베일에 방문해주세요. • https://www.facebook.com/sunnyvalesoft • http://www.sunnyvale.co.kr
  44. 44. 감사합니다.

×