12/13일 미래창조부, NIPA에서 개최한 제 2회 아키텍처 실무자 컨퍼런스에 발표한 자료입니다. 저희 모바일 분과에서 “안드로이드 오픈소스 어플리케이션 블록 2″라는 주제로 발표를 하였습니다. 실제 현업에서 활동하시는 한분 한분을 모아서 만든 자료이므로 많은 안드로이드 개발자에게 도움이 될거리 믿습니다.

어플리케이션 블록

어플리케이션 블록 이라는 것은? 기존 Framework들을 더 쉽게 잘 쓸수 있게 추상화 놓은 Block으로 보시면 됩니다. 하나의 프레임워크에 거대하게 모든 기능을 다 들고 있는게 아니라, 잘 블록화 되어서, 필요한 것만 그때 가져다 쓰는 컨셉이라고 생각하시면 됩니다.  모바일 에서는 다양한 오픈소스를 활용해야 하므로, 어쩔수 없는 상황입니다. 안드로이드에서 Spring 프레임워크가 잘 안 쓰이는 이유도 이거죠. 덩치가 큰 편입니다.

안드로이드는 인기있는 Framework입니다. 하지만 단편화나 폐쇄적인 운영으로, 개발자를 골치아프게 하는 여러 이슈들이 많습니다. 이러한 문제를 해결하기 위해 무수한 오픈소스가 존재중이며, 알람몬, Sleep if you can 을 비롯해, 안드로이드  개발자들이 자주 사용하는 여러 오픈 소스들을 모아서 정리하고 Layer별로 분류후 아키텍처와 사용 방법을 정리해 공유한 자료입니다.

같이 고생을 많이 해 주신 주윤회 님, 오유한 님,   알람몬 팀, 신재명 님 , 진성주 님에게 감사를 드립니다.

계속 읽기

2013년 11월 21일 한,중,일을 대표하는 오픈소스 전문가가 모여 트레이팅 캠프를 엽니다.

장소는 부산  파라다이스 호텔에서 오전 10시부터 시작됩니다.

제가 동북아 오픈소스 포럼의 한국측 WG2 인력양성 분과장이라 소개를 하는 시간을 가지며,  오시는 분은 다음과 같습니다.

  • 한국 : 진성주 ,  Apache Usergrid Committer
  • 중국 : Hui CHENG, Open Stack Board Member
  • 일본 : Yoshiki SIGIURA , NCA Steering Committer

한중일을 대표하는 오픈소스 선수가 직접 여는 캠프이며, 부산 시민 여려분에게도 큰 도움이 될거 같습니다.

경남 지역에 개발자 분들의 많은 참여 바랍니다. :)

신청은 여기에 하시면 됩니다.

계속 읽기

NIPA 소프트웨어 공학센터의 지원으로, Android Application Block이라는 안드로이드 참조 아키텍쳐 모델을 만들었습니다 .

컨퍼런스를 통해서 먼저 소개하였고, 프리젠테이션을 통해서 안드로이드의 문제를 해결할때 필요한 여러 오픈소스들을 설명해 드렸습니다.  (재미난 것은 외국에서도 Android Bootstrap이라는 형태로 기존 Android의  문제를 해결하기 위해 여러 오픈소스를 묶어 제공을 했고, 안드로이드 개발자에게는 꽤 인기가 좋은 것으로 알고 있습니다.  )

이 버전보다 더욱 업데이트된 모바일 참조 아키텍처 (안드로이드) 를 발간 하였습니다. (링크를 통해 다운 받으시면 됩니다 – 소프트웨어 공학센터에 이메일 가입이 필요합니다)

안드로이드 어플리케이션 블록 아키텍처 

기존의 안드로이드의 구조(젤리 빈 기준)는 진성주 군과 분석하여  정리해보았습니다 (이 링크를 클릭하시면 됩니다).

그리고 저희가 몇가지 오픈소스들을 더해서 아래와 같이 추가된 모델을 만들었습니다.  새로 추가된 오픈소스가  기존의 어떤 안드로이드 패키지와 연관이 있는지 색깔을 입혀 표현을 하였습니다.

android application block_nipa

계속 읽기

지난 12/14일 있었던 “안드로이드 오픈소스 어플리케이션 블록” 에 참여해 주셔서 감사합니다. 뜨거운 열기와 함께 잘 마무리 하였습니다.  많은 후배들과 좋은 팀들이 만든 자료라 더 뜻 기쁜거 같습니다.

어플리케이션 블록

어플리케이션 블록 이라는 것은? 기존 Framework들을 더 쉽게 잘 쓸수 있게 추상화 놓은 Block으로 보시면 됩니다.  .NET에서 Enterprise Library가,  Java진영에서는 Spring이 좋은 예 입니다.

어플리케이션 블록이라는 단어를 유행시킨 것이 Microsoft인데 Android 4.0부터 안드로이드 공식문서에서 “어플리케이션 블록”이라는 단어를 종종 쓰고 있습니다. 즉 Microsoft 출신의 개발자들이 많이 Google로 흡수되었다는 좋은 예이지요.

안드로이드는 이미 좋은 Framework입니다. 하지만 단편화나 UI쪽으로는 개발자를 골치아프게 하는 여러 이슈들이 많습니다. 이러한 문제를 해결하기 위해 무수한 오픈소스가 존재중이며, 알람몬, Sleep if you can 을 비롯해, 안드로이드  개발자들이 자주 사용하는 여러 오픈 소스들을 모아서 정리하고 Layer별로 분류후 아키텍처와 사용 방법을 정리해 공유한 자료입니다.  도움을 주신 알람몬 팀, 신재명, 진성주 님에게 감사를 드립니다.

계속 읽기

지난 토요일 (2012/10/28) 애자일과 패턴의 대가인 Linda Rising(린다 라이징)과  만남을 가졌습니다. 저희가 출간이 눈앞에 있는 Fearless Change의 저자이시구요. Agile 진영에서 이분이 미치는 영향력을 실로 거대하며, 간단히 Infoq에서 찾아보시면 그 해답을 얻으 실수 있습니다. 전세계 열리는  왠만한 agile 컨퍼런스에 메인 speaker로 참여하시고, 많은 agile 서적이 linda rising에게 감사를 하고 있거든요.

만난지 2년 만이였어요. SPLASH와  Agile 컨퍼런스가 겹치면서, PLoP에 못 나오셨거든요. 정말 반가웠습니다.  하루 내내 우리 나라의 문화를 알기위해서 창덕궁 , 전쟁 기념관 등을 돌아다니며, 관심있게 보셨구요.  특히 거북선에 관심을 보이셨답니다.

저녁에 NHN  그린 팩토리 앞 나루 라는 퓨전 레스토랑에서 인터뷰를 하며 저희 EVA 식구들의 궁금중을 푸는 시간을 가졌습니다.  여러분에게 어떠한 이야기가 오고 갔는지 전달해 드리고자 합니다.   사실 모임전에 저희끼리  Google Drive를 통해 저희들의 질문들을 모아 놓았고,  다양한 사람들의 의견을 물을 수 있도록 안배를 해, 각자 우선 순위 높은  자시만의 고민에 대해  물어 볼수 있었습니다

이 질문을 통해 책에서나 세미나에서 듣지 못했던 사람 Linda에 대해서 많은 것을 깨달을수 있었으며, 70세의 나이에도 불구하고 정말 철저한 자기 관리에 놀랐습니다. 특히 롤 모델이 없는 여성 개발자들에겐 Linda Rising이 좋은 롤 모델이 될거라고 믿습니다.

이 글 정리에 큰 도움을 주신 김동현님, 유성우님 에게 깊은 감사를 드립니다. 

인터뷰..

계속 읽기

지난 주말 (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단계에 진출은 하지 못했지만, 지금도 열정을 내뿜으며 같이 성과를 만들어내고 좋은 팀웍을 유지하고 있습니다.

특히 많은 사용자들을 위한 경우, API 설계는 어렵습니다. 만약 여러분이 수 백에서 수 천의 사용자들이 사용할  API 를 설계한다면, 미래에 이것이 얼마나 바뀔 것인지, 그리고 변경 사항이 클라이언트 코드를 손상시킬 수 있는지 여부를 고려해야 합니다. 그 이상으로, 여러분은 API 사용자가 여러분에게 어떻게 영향을 미칠지 생각해야 합니다.

만약에 여러분의 API 클래스 중 하나가 내부적으로 자신의 함수들 중에 하나를 사용한다면, 사용자가 여러분의 클래스의 서브클래스를 만들고 오버라이드override 할 수 있으며, 그리고 그것은 재앙이 될 수 있다는 것을 꼭 명심해야 합니다. 몇몇 사용자들이 그 메소드를 서로 다른 의미로 받아들였기 때문에 여러분은 그것을 바꿀 수 없을지도 모릅니다. 메소드 내부 구현에 대한 여러분의 향후 선택은 사용자들이 이를 얼마나 받아들여 줄 수 있느냐에 달려 있습니다.

API 개발자들은 다양한 방법으로 이러한 문제들을 해결하지만, 가장 쉬운 방법은 API 를 봉쇄하는 것입니다. 만약 여러분이 자바 환경에서 작업한다면, 대부분의 클래스와 메소드를 final 로 선언하는 유혹에 빠질 수도 있습니다. C# 환경에서는, 여러분의 클래스와 메소드들을 sealed 로 선언해 버릴 수도 있습니다. 여러분이 어떤 개발 언어를 사용하든 간에, 행위를 오버라이드하거나 이후에 여러분의 선택을 제약하도록 코딩하는 것을 막기 위해 싱글턴 패턴이나 정적 팩토리 메소드를 이용해 API를 제공하고자 할 것입니다. 이 모든 것들이 합리적으로 보입니다만, 진짜로 그렇습니까?

지난 십년 동안, 우리는 점차 단위 테스트가 실전에 매우 중요한 부분이라는 사실을 깨달았지만, 이런 교훈이 업계에 완벽하게 확산되지는 못했습니다. 그 증거는 우리 주위에 널려 있습니다. 타사의 API 를 사용하는 임의의 테스트 안된 클래스에 대한 단위 테스트를 하려고 하면, 여러분은 곤경에 빠질 것입니다. 여러분은 그 코드가 마치 접착체로 붙인 듯이 API 를 사용하고 있다는 것을 알게 될 것입니다. 그것이 API 클래스이고 그래서 여러분의 다른 코드와 API 가 상호작용 한다는 것을 알아챌 수 있도록 하는 방법도 없고, 그래서 테스트를 위한 반환값을 제공할 수 있는 방법도 없습니다.

계속 읽기

얼마전 이대엽님이 도메인 주도 설계 (Domain Driven Design) 라는 명서를 번역해 주셨습니다. 저 역시 구매를 했었고, DDD가 가져오는 철학이나 사상은 정말 훌룡합니다.

왜 이런 명서가 이제 번역될수 밖에 없는지 현실을 알고 있지만, 정말 슬픕니다.

POSA나 DDD와 같은 명서들은 번역을 한다는 것의 거의 희생에 가깝습니다.

사실 역자 입장 에서는 적절한 어휘 선정과, 국내 개발자의 시선에 맞게 레벨을 조정하기 위해 각주를 다는등 여러가지 노력이 필요합니다. 

또한 책이 많이 팔릴지도 의문이고, 이미 읽을만한 분은 다 읽었다고 생각이 들고, 나의 안티를 양성하지 않을까 고민이 됩니다.

실례로, 몇몇 출판사를 통해 “명서를 왜 이렇게 번역했느냐?”라며 여러가지 공격을 당한 사례들을 종종 들었기에 쉽게 움직이지 못하는 것도 사실입니다.

이러한 상황에서도 DDD가 이 세상에 나오게 해주신 이 대엽님과 여러  고생해 주신 분들에게 감사를 드립니다.

다시 본론으로 돌아와 DDD는 고객과 개발자/아키텍트 간에 대화를 나눌수 있는 좋은 도구입니다. 

 패턴 계의 철학을 생각해 보면, 모든 상황에 만능인 솔루션은 없다. 단지 상황에 맞는 해결책이 있다는 것을 생각해 볼 필요가 있습니다. 그러기에 해당 Context들이 대부분 도메인과 밀접한 연관이 있고, DDD의 초안이 PLoP 에서 첫 데뷔를 했기 때문에 역시 그 본류는 패턴의 철학과 맞 닿아 있는 방법입니다.

그럼 DDD를 프로젝트에 적용하기 이전에, 고려해야 할 것들 이야기 해보고자 합니다.  어떠헌 프로세스, 툴들에게도 동일하게 적용된느 철학입니다.  맹목적인 추종보다 결국 상황에 맞는 솔루션이라는 것을 기억해 주셔야 됩니다.

계속 읽기

프레임워크 문서화 잘하기 자료입니다.  이 글의 모든 저작권은 박선욱 님에게 있습니다. 

 

박선욱님이 마소 9월호에도 기고를 하셨는데, 추후 기고 자료도 공유하도록 하겠습니다.

 

발표 자료 소개
 새로운 프로젝트를 할 때마다 새로운 프레임워크를 접하는 일은 이제 예사가 되었다. 어떻게 새로운 프레임워크를 학습하여 활용할 수 있을까? 역발상으로 프레임워크 문서화 잘하기 패턴을 통해서 우리가 원하는 정보가 어디 있는지 알 수 있다.

때로는 관련 책을 제목만으로 선택할 수 있게 해준다. 또한 프레임워크가 아니더라도 우리 프로젝트에 적용할 수 있는 문서화패턴에 대해서 생각해볼 수 있다.

계속 읽기

Framework Engineering  발표자료를 약간 업데이트 했습니다. Framework 전문가들을 서두에 추가하고, 업적들을 나열했습니다. Team 운영에 관해서 Cross Functional Team의 내용 추가 .NET Framework의 Break Changes를 일부 업데이트 했습니다. 상업적으로 강의나 발표자료, 출판용으로 사용을 금지합니다. 다만 원저작자와 출처를 명시해 주시는 조건과, 원 저작자의 동의하에 비 상업적 용도로 사용하실수 있습니다.