지난해 다양한 소프트웨어 아키텍팅 강의를 진행해 왔습니다. 아키텍처 설계 및 평가 기법, 그리고 부하테스트/ 성능 최적화에 대한 강의가 주를 이루었습니다. 아키텍처 설계 프로세스는 말그대로 진행은 하면 되지만, 결국 많은 설계 기법을 알지 못하면 좋은 설계를 하지 못하는 상황이 빈번하게 발생했습니다. 2022년에 다음과 같은 강좌 들을 진행했습니다. 강의를 하다보면서, 아직 많은 교재들이 디자인패턴에 지식이 머물러있고, 몇몇 […]

일전에 약속을 드렸던 것처럼 Fault Tolerance 패턴 자료를 공유드립니다. 고 가용성이라는 것이 서버쪽에서는 동일한 요소를 두개 주는 이중화라는 기법으로 확보가 가능하지만, 자동차나 프론트엔드, 모바일쪽에서는 이중화 전략을 쓰기에는 한계가 많습니다. 소프트웨어 아키텍처 설계 과정을 준비하면서 만든 자료입니다. 저 역시 많은 선배님들의 지식을 가지고 성장했던 것처럼, 이 자료가 많은 동료와 후배분 들에게 미약하나마 도움이 되었으며 합니다. pdf로 […]

mongodb가 혜성처럼 등장해 많은 사랑을 받은 이유가 여러가지 있다.  가장 큰 덕은 모바일의 폭발적인 성장이지만, 개발자에게는..

  • auto-sharding
  • schemaless + json 데이터 저장
  • 자체적으로 가지고 있는 master-slave  high availability 기능

정도 되지 않을까 생각한다.

sharding이라는 것은 꽤 귀찮은 작업으로 어떻게 데이터를 분배해야 할지 많은 고민을 해야 되는데, 굳이 크게 고민하지 않고 auto-sharding을 쓸수 있는 적당한 규모의 프로젝트라면 마다할 필요가 없다.

또한 High Availiability를 자체적으로 지원을 하는데

replica-set-primary-with-secondary-and-arbiter1) 별도의  watcher인  arbiter 를 셋업하여 master-slave를 감시하는 방법

replica-set-primary-with-two-secondaries2) watcher없이 master-slave가 서로 heartbeat 메세지를 보내고 문제를 감지해 failover를 처리하는 방법

이렇게 두가지를 지원한다.  개발자에게는 야호하고 소리를 지를수 있는 좋은기능! (단 죽은 master를 어떻게 살리지는 개발자 여러분의 몫 – 좋은 방법이 있으면 공유를…)

계속 읽기

스터디 그룹을 위한 패턴 언어에는 총 4개의 파트로 구성되어 있으며, 정신(Spirit), 분위기(Atmosphere), 역할 (Roles), 관습(Customs) 으로 나뉜다 .

스터디 그룹을 위한 패턴 언어 – Sprit 편 ‘Spirit(정신)’ 부분에서는 1. (숫자는 해당 패턴 번호를 의미한다.) 스터디를 왜 해야 하는지, 2. 토론의 중요성에 관해, 3. 집중할 수 있는 분위기에서 진행하기, 4. 꾸준히 하기, 5. 인맥형성 부분이 있다.

스터디 그룹을 위한 패턴 언어 – Atmosphere 편 ‘분위기’ 부분에서는 큰 부분에서부터 점차 세부적으로 기술하고 있으며, 6. 스터디의 지역적 장소 설정, 7. 장소의 분위기 설정, 8. 자리배열 방법, 9. 웹 페이지 의 순으로 기술하고 있다.

스터디 그룹을 위한 패턴 언어 – Role 편 ‘역할’ 부분에서는 각 구성원의 역할에 대해 기술하고 있는데 10. 리더는 열정적으로, 11. 사회자는 의욕적으로, 12. 참가자는 적극적으로 임하고, 13. 참가자는 또한 준비를 해 와야 한다. 마지막으로 14. 잘하는 사람을 적극 영입해야 한다는 것으로 설명되고 있다.

이 자료에 대한 모든 권한은 1차적으로 Joshua Kerievsky에게 있으며, 편역된 이 post의 권한은 소프트웨어 마에스트로 멘티였던 김민수, 장성환, 이원희, 채경훈 님에게 있습니다. 사용하실 분이 있으면, 위 네 분에게 문의해서 답신을 드리겠습니다.

습관  (Customs) 편

지금까지 스터디를 유지시키는 마음가짐, 여러 가지 분위기 조성, 그리고 규칙들에 대해 알아보았다. <<자조론>>으로 유명한 영국의 저술가인 새뮤얼 스마일스는 “습관은 나무껍질에 글자를 새긴 것과 같다. 그 나무가 커감에 따라 글자가 커진다.”라는 말은 남겼다. 좋은 습관 하나하나가 모여 스터디를 원활하게 돌리는 원동력이 될 수 있는 것이다.

이어지는 글들은 스터디를 위한 7가지 Customs(습관)에 대한 패턴들이다.

15. 토론을 시작하는 질문 (OPENING QUESTION )** 

Joshua Kerievsky는 대학 1학년 여름방학에 일리아드 오디세이를 읽고 독후감을 쓰는 숙제를 받았다고 한다. 밤낮을 가리지 않고 읽고 또 읽어 숙제를 마칠 수 있었는데, 당시 그 책은 전쟁에 관한 소설인줄 알았다고 한다.

학기가 시작한 이후 교수님께서 한 사람의 운명과 그 자신의 의지에 관한 질문을 던지셨다. 이 질문은 양을 치는 양치기가 언덕에 숨어서 전쟁을 보는 책의 장면과 연결이 되었다. 이 수업 이후 저자는 일리아드 오디세이를 운명에 순응하는 것과 개척하는 것에 대한 관점으로 바라볼 수 있었다고 한다.

사람들은 시작질문 없이 책을 읽으면 책의 진정한 내용을 알지 못하고 겉모양만 이해하게 된다. 하지만 이처럼 시작질문을 하게 되면 사람들의 관심을 끌 수 있게 되고 생각하기 어려운 부분들을 쉽게 접근할 수 있도록 해준다. 이 방법은 어려운 내용에 대해 공부할 때 더 유익하게 쓰일 것이다.

계속 읽기

스터디 그룹을 위한 패턴 언어에는 총 4개의 파트로 구성되어 있으며, 정신(Spirit), 분위기(Atmosphere), 역할 (Roles), 관습(Customs) 으로 나뉜다 .

스터디 그룹을 위한 패턴 언어 – Sprit 편

‘Spirit(정신)’ 부분에서는 1. (숫자는 해당 패턴 번호를 의미한다.) 스터디를 왜 해야 하는지, 2. 토론의 중요성에 관해, 3. 집중할 수 있는 분위기에서 진행하기, 4. 꾸준히 하기, 5. 인맥형성 부분이 있다.

스터디 그룹을 위한 패턴 언어 – Atmosphere 편

‘분위기’ 부분에서는 큰 부분에서부터 점차 세부적으로 기술하고 있으며, 6. 스터디의 지역적 장소 설정, 7. 장소의 분위기 설정, 8. 자리배열 방법, 9. 웹 페이지 의 순으로 기술하고 있다.

이 자료에 대한 모든 권한은 1차적으로 Joshua Kerievsky에게 있으며, 편역된 이 post의 권한은 소프트웨어 마에스트로 멘티였던 김민수, 장성환, 이원희, 채경훈 님에게 있습니다. 사용하실 분이 있으면, 위 네 분에게 문의해서 답신을 드리겠습니다.

역할  (Roles) 편

앞서 두  파트를 통해  스터디를 유지시키는 마음가짐, 여러 가지 분위기 조성에 대해서 알아보았다면, 이제는 스터디 팀원들 개 개인의  역할에 대해 설명하는 패턴언어이다.

‘역할’ 부분에서는 각 구성원의 역할에 대해 기술하고 있는데 10. 리더는 열정적으로, 11. 사회자는 의욕적으로, 12. 참가자는 적극적으로 임하고, 13. 참가자는 또한 준비를 해 와야 한다. 마지막으로 14. 잘하는 사람을 적극 영입해야 한다는 것으로 설명되고 있다.

계속 읽기

지난 주말 (2012년 5월 20일) 코엑스에서 스마트 개발자 협회가 주관하는 글로벌 커뮤니티 써밋에  EVA 커뮤니티 연사로 발표를 했습니다.

먼저 이번 발표에 많은 도움을 준 소프트웨어 마에스트로 멘티인 오유환, 강미경, 김나래, 손윤정 4 멘티에게 감사드립니다.  이 4명이 아니였다면 이러한 좋은 자료는 나오지 못했을 겁니다.

프리젠테이션이 다루는 내용은 다음과 같습니다.

Android 이해

  • 구글이 꿈꾸는 Android의 미래 (Modu 사 특허 인수와 Android@Home)
  • Binder ( Broker 패턴 )과 Intent

오픈소스 그리고 사례

  • Simple Framework
  • Logcat보다 Microlog4Android
  • 불편하지 않은 화면 갱신 (Publisher-Subscriber)

분석 방법

  • Localytics로 사용자 행동 패턴 분석
  • STAN을 이용한 Android App 분석방법

이번 발표는 소프트웨어 마에스트로 멘토로 활동하면서, 멘티들과 같이 만들어 낸 작품입니다.   비록 여러가지 상황(취업, 학업등)으로 모든 멘티가 다 2단계에 진출은 하지 못했지만, 지금도 열정을 내뿜으며 같이 성과를 만들어내고 좋은 팀웍을 유지하고 있습니다.

스터디 그룹 언어 패턴 Sprit (정신) 편에 이어 Atmosphere (분위기) 편을 나누고자 합니다. ( 이 포스트를 쓸수 있게 흔쾌히 허락해준 김민수, 장성환, 이원희, 채경훈님의 지식 나눔에 정말 감사를 표합니다.)

Atmosphere (분위기) 편

스타벅스의 CEO Howrad Schultz는 그의 저서에서 편안한 만남의 장소의 중요성을 언급하면서 미국에서 사적인 교류의 시간이 줄어들고 있다고 지적했다. 1990년대 들어서 커피숍이 미국인의 사교의 장소로써 중요한 역할을 차지 하게 되었다. 이러한 장소는 집이나 회사의 일에 간섭 받지 않는 “제 3의 장소” 역할을 담당했기 때문이다.

이번 파트부터는 Atmosphere(분위기,장소)에 관한 이야기이다. 분위기나 장소의 선정도 스터디를 오래 이끄는 데 필수적인 요소이다. 큰 장소를 선정하고 그 장소내의 분위기 자리배열방법, 온라인 공간을 만드는 것에 대해 나누고자 한다.

계속 읽기

여러분에게 의미있는 패턴들을 공유해서 무척 기쁩니다.  패턴을 활용한 리펙터링 (Refactoring to Patterns)이라는 서적을 통해 우리나라에 알려진 Joshua Kerievsky의 스터디 그룹 패턴 언어를 번역은 아니어도 약식을 통해 편역을 해 공개해 드립니다.

삼성 소프트웨어 맴버십 후배이자, 소프트웨어 마에스트로 멘티인  김민수, 장성환, 이원희, 채경훈님에게 정말 감사드립니다.  정말 이 4친구에게 감사의 메세지를 보내며, 지식 나눔에 정말 감사를 표합니다.  훗날  따로 이 친구들에 대해 포스팅을 하도록 하겠습니다.

또한 이 편역된 자료를 다듬어 준  EVA 식구 분들에게 감사드립니다. 아무런 댓가 없이 열심히 다듬어 주셔서 감사드립니다.

소프트웨어 설계가 아니라. 스터디를 성공적으로 이끄는 패턴이라 의아해 하시는 분이 있을지 모르지만, 모든 것들이 사람이 모여 만드는 결과 이므로 사내 동호회나 커뮤니티에서 스터디를 이끄시는 분에게는 도움이 될듯 합니다.

이글을 읽기 전  2010년 PLoP에서Joshua Kerievsky가 발표한 “A Timeless way of Communicating”을 보시면 여러므로 도움이 되실 듯 합니다.

이 자료에 대한 모든 권한은 1차적으로 Joshua Kerievsky에게 있으며, 편역된 이 post의 권한 김민수, 장성환, 이원희, 채경훈 님에게 있습니다. 사용하실 분이 있으면, 위 네 분에게 문의해서 답신을 드리겠습니다.

계속 읽기

패턴계에서는 절대적으로 내려오는 한가지 격언이 있습니다.

Pattern isn’t an island.  패턴은 섬이 아니다.  

패턴이라는 것은 크게는 Architecture을 결정하기도 하며, 그 밑에 Design을 결정하는 중요한 역할을 합니다. 즉 패턴간에 서로 깊은 연관성을 가진다는 것 입니다.

일전에 제가 다녀왔단 PLoP Bootcamp 포스트에서  Fault Tolerance 패턴의 저자인 Bob Hanmer가 Problem/Solution에서 언급한 패턴 언어를 참고하시기 바랍니다.

위 그림을 예로 들면 통신시 신뢰성을 확보하기 위해 IO GateKeeper라는 Monitor를 통해 데이터를 거쳐가게 만들었지만, Source/Destination/메세지의 순서등을 구분하기 위해 Token (Time + Mac Address + Handler 정보) 인 IO Triage 이용하게 되고, IO Triage를 구축하기 위해 내부적으로 Timestamp를 사용하는 모습이 보입니다.

즉  거대한 아키텍쳐적인 결정이든, 그 밑에 세분화된 설계에 대한 결정들이 개별적으로 결정되는 것이 아니라, 서로 간에 영향을 미치며 결정된다는 것입니다.

작년에 Kent Beck님은 세미나에서 이러한 말을 했습니다.

Design is an island‘  (설계는 섬이다.)

패턴을 몰랐다면 이러한 말이 별로 도발적으로 들리지 않았겠지만, 패턴계에서 늘 원칙처럼 언급하던 패턴이 가져오는 Side Effect를 중화시키기 위해 다른  해결책으로 또 다른 패턴들이 도입되는 그림을 늘 봐온 저로서는 도발적인 정의였습니다.

계속 읽기

두번째 고객 소통 패턴을  여러분과 공유합니다.다시 한번  손정민, 변현규, 문준석, 송은진 4 친구에게 정말 감사함을 표합니다!

소통은 사회적 관계를 형성하기 위한 핵심 매개체 중 하나다. 바쁜 현대사회에서 페이스북이나 트위터 등 소셜 네트워크 서비스(SNS)를 이용해 소통의 끈을 이어가는 사람들을 보면 소통이 인간의 기본욕구라는 것을 명확히 알 수 있다.

그렇다면 소통은 단지 사람과 사람사이에서만 성립되는 것일까? 필자는 기업과 고객의 관계에서도 소통이라는 명제가 성립할 수 있다고 생각한다. 이번 기고에서는 애자일과 패턴의 대가인 Linda Rising이 발표한 ‘고객과 소통하는 패턴’을 국내 실정에 맞게 의역했다.

이전 기고에서는 “고객 = 돈줄”이 아닌 “고객 = 사람”, 즉 “판매가 아니라 관계다(It’s a relationship., Not a Sale)”를 시작으로 고객을 파악하고(Know the Customer) 신뢰를 쌓으며(Build Trust) 고객의 말에 집중하는(Listen Listen Listen) 방법에 대해 알아 보았다.

이전 패턴이 고객과 관계를 형성하기 위한 패턴이였다면, 이번에 소개할 패턴은 형성된 관계를 발전시키는데 초점을 두고 있다.

반응하라(Be Responsive).

Aliases : 고객을 벽걸이처럼 내버려두지 말고 지속적인 관계를 유지한다.

Problem : 고객요구에 대한 적당한 반응시간은 언제일까?

Context : ‘판매가 아닌 관계다’와 ‘고객을 파악해라(Know the Customer)’를 이해한다. 신뢰 쌓기에 매진하라. 듣고 듣고 또 듣는 자세를 가져라.

Forces : 당신은 고객에게 주의를 기울이기 원하지만 항상 즉각적인 반응을 할 수는 없다. 사무실에 없거나 고객응대 시스템이 다운될 수도 있다.

계속 읽기