145
소소소소소 소소소소소 소소소 소 12/97 소소

아키텍트가 알아야 할 12/97가지

  • View
    2.211

  • Download
    0

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: 아키텍트가 알아야 할 12/97가지

소프트웨어 아키텍트가

알아야 할 12/97 가지

Page 2: 아키텍트가 알아야 할 12/97가지

2

아키텍트란 ?

한국에서 아키텍트란 ?

Architect 를 위한 조언들 .

Page 3: 아키텍트가 알아야 할 12/97가지

Architect

Page 4: 아키텍트가 알아야 할 12/97가지

현업이 요구하는 기괴한 아키텍트의 역할 .

http://vizend.tistory.com/37

Page 5: 아키텍트가 알아야 할 12/97가지

Architect ?= GOD

Page 6: 아키텍트가 알아야 할 12/97가지

그 누구의 일도 아니면 ..

네 ( 아키텍트 ) 탓이오 !!

Page 7: 아키텍트가 알아야 할 12/97가지

여러분이 만난 S/W Architect.

Architect ??

Applica-tion Archi-

tect

Business Architect

Service Architect

Data Ar-chitect

UX Archi-tect

Enterprise Architect

Test Archi-tect

Security Architect

Infrastructure Architect

Page 8: 아키텍트가 알아야 할 12/97가지

아키텍트가 알아야할 12/97 가지

Page 9: 아키텍트가 알아야 할 12/97가지

요구사항

Vasa 호 이야기

아키텍팅은 균형에 관한 것 .

걸어다니는 해골

설계

A 와 B 의 사이의 결정

1000 피트의 뷰

구현 가능한 것만 설계해라 .

개발 /운영

가장 큰 문제는 기술이 아니다 .

반복 작업과 싸워라 !

드워프 . 엘프 , 마법사 그리고

자세

정경유착

고객의 고객

사과와 컨설팅 이야기

Page 10: 아키텍트가 알아야 할 12/97가지

왜 우리에겐 이런 일이 발생할까 ?

Page 11: 아키텍트가 알아야 할 12/97가지

# 조언 1 Mark Richards 의 Vasa 호 이야기

Page 12: 아키텍트가 알아야 할 12/97가지

Vasa 호 이야기

아돌프 구스타프 2 세

스웨덴 왕실의 위엄을 온 세계에 알리고

덴마크와 동유럽을 침공하기 위해 국왕이 직접 Vasa 호의 설계에 참여 .

Page 13: 아키텍트가 알아야 할 12/97가지

국왕으로 인해 변경된 요구사항

함포 64 문

원래는 32 문 !

세계최초로 상하 2 열로

함포 배치

하는 김에 화려한 장식도 달자 !

금으로 도금한 병사 조각상 1000 여개 !

스웨던 왕실 상징 !!

두마리의 사자 등 ..

사람을 많이 태워야 겠어 ! 갑판 확장 !!

호화로운 장식 채우기

많은 탑승인원 450 명 !

Page 14: 아키텍트가 알아야 할 12/97가지

결국은 ..

Page 15: 아키텍트가 알아야 할 12/97가지

사상 최대의 사망자 ? 왜 ?

배 출항식 탑승인원 구성

귀족 100 명선원 50 명

수영을 못하는 귀족들 !

대부분 익사 !!

Page 16: 아키텍트가 알아야 할 12/97가지

오히려 다행 !

덕분에 , 전수식 후 항해하기로 했던

선원과 군인 450 명은 목숨을 건짐 .

Page 17: 아키텍트가 알아야 할 12/97가지

결론

Vasa 호와 같이 모든 요구사항을 충족시키려는 시도는 궁극적으로 아무것도 수행할 수 없는 불완전한 아키텍처를 만들게 됩니다

Page 18: 아키텍트가 알아야 할 12/97가지

반복되는 역사 ..

Page 19: 아키텍트가 알아야 할 12/97가지

# 조언 2 - Randy Stafford 의“아키텍팅이란 균형에 관한 것이다 .”

Page 21: 아키텍트가 알아야 할 12/97가지

P

Quality Attributes Workshop

Page 22: 아키텍트가 알아야 할 12/97가지

QAW Roadmap

Page 23: 아키텍트가 알아야 할 12/97가지

QAW Roadmap

Page 24: 아키텍트가 알아야 할 12/97가지

Context

단 , QAW, ATAM 은 구축하는 시스템이 명확하고 ,

이해당사자들이 시스템을 이해하고 있을 때 적용 가능하다 .

Page 25: 아키텍트가 알아야 할 12/97가지

Context

이해 당사자들간의 정치관계를 조심해라 .

또한

투표권을 전체 팀원에 적절히 배분해라 .

Page 26: 아키텍트가 알아야 할 12/97가지

# 조언 3 – Alistair Cockburn

요구사항이 명확하지 않을 때 .걸어 다니는 해골로 시작해라

Page 27: 아키텍트가 알아야 할 12/97가지

Rainy Day..

고객도 나도

무엇을 만들어야 할지 모를 때 .

Page 28: 아키텍트가 알아야 할 12/97가지

사례 .

신사웅님 - 요구사항이 명확하지 않을 때..

경영 이론 시스템을 적용해

의사 결정 도구 시스템을

구축하는 프로젝트

Page 29: 아키텍트가 알아야 할 12/97가지

문제 발생고객• 경영 이론을 시스템으로

구축한 경험 전무• 단지 경영진으로부터

방향성만 제시 받음

전산팀• 안정화된 시스템에 새로운

기능 / 프로세스를 추가해본 경험밖에 없다 .

• 구체적인 요구사항이 없어 설명한 경영 이론에만 의존해 시스템 구축

Page 30: 아키텍트가 알아야 할 12/97가지

갈등 발생 !!

• 진행과정을 리뷰 하면서 , 갈등 시작

• 전산팀은 나름대로 요구사항 정리 후 개발– 시연을 하게 되면 전혀 다른 요구사항이 발생– 고객이 원하는 시스템이 아니었다는 결론– 전산팀에서 아이디어를 고민해 제시해 달라 !!

• 업무적인 갈등을 넘어 감정의 갈등으로 ..

Page 31: 아키텍트가 알아야 할 12/97가지

상황정리 .

고객의 입장에서는 최종 보이는 결과는 UI

실제 필요한 요구사항 파악 불가QoS – ( 비기능적인 요구사항 ) 파악 불가

선정한 Framework 의 사용성 , 적합성 모름 .비즈니스 도메인에 대한 정보 예측 불가

구축 후 발생하는 여러 문제들을 파악 불가

Page 32: 아키텍트가 알아야 할 12/97가지

Walking Skele-ton

Page 33: 아키텍트가 알아야 할 12/97가지

걸어 다니는 해골 .

Prototyping 보다 한 단계 앞선 모델 .

종단 ( 예를 들면 UI~DB 까지 ) 간을 오가며 수행되는 가벼운 구현체 .

모든 호출 경로를 실험할 수 있게 작동하는 작은 시스템 .

Page 34: 아키텍트가 알아야 할 12/97가지

걸어 다니는 해골 .

모든 종단을 다 관통하는 주요 시나리오를 몇 개 만들어라 .

그러다 보면 , 시스템의 외적 /내적인 요구사항을 자연스럽게

도출할 수 있다 .

Page 35: 아키텍트가 알아야 할 12/97가지

# 조언 4 – Erick Doernen-burg

“1000피트의 뷰를 가져라”

Page 36: 아키텍트가 알아야 할 12/97가지

Architecture Visualization

Page 37: 아키텍트가 알아야 할 12/97가지

높이 (30000 feet) 봐야 할까 ?

Page 38: 아키텍트가 알아야 할 12/97가지

뭐가 보이시나요 ??

Page 39: 아키텍트가 알아야 할 12/97가지

자세히 (0 feet) 봐야

할까 ?

Page 40: 아키텍트가 알아야 할 12/97가지

제한된 코드로 프로젝트가 잘되고 있는지 판단은 ?

Page 41: 아키텍트가 알아야 할 12/97가지

3 만 피트 vs 0 피트의 뷰 .

3 만 피트• 다이어그램의 Line 의 의미는 ?

• 의존성 ?• 데이터 흐름 ?• 버스와 같은 공유자원 ?

0 피트• 너무 상세한 정보임 .• 전체적인 구조를 보지

못함 .

Page 42: 아키텍트가 알아야 할 12/97가지

해결책은 ..적절한 1000 피트의 뷰

Page 43: 아키텍트가 알아야 할 12/97가지

STAN (Structure Analysis for Java)

STAN - http://stan4j.com/eclipse/eclipse-integration.html

Demo

Page 44: 아키텍트가 알아야 할 12/97가지

Robert C. Martin 의 그래프

Page 45: 아키텍트가 알아야 할 12/97가지

Instability

•패키지의 움직일 수 있는 여력을 판단하는 지표

•다른 패키지에 영향을 미치지 않고 , 해당 패키지를 쉽게 변경 할 수 있는가 ?

•Instability I = Ce / (Ca+Ce)

•Ce = Efferent Coupling (Ingoing Dependencies)•Ca = Afferent Coupling (Outgoing Dependencies )

Page 46: 아키텍트가 알아야 할 12/97가지

Instability

Instability I = Ce / (Ca+Ce)

당신의 패키지가 다른 사람이 많이 쓴다면 , 즉 Outgoing, Ca 가 많다면 , 여러분의 패키지는 변경하기 어렵다 .

반대로 Outgoing 하는 Ca 가 적고 , Ingoing( 다른 패키지만 사용만 하는 ) Ce,여러분의 패키지는 쉽게 변경해도 된다 .

즉 0.0 에서 0.3 이면 안정적인 버전 , 0.7 에서 1.0 이면 불안정적인 상태다

당신의 패키지를

누군가 많이 쓰고 있다면

바꾸기 쉽지 않다 .

Page 47: 아키텍트가 알아야 할 12/97가지

Abstractness

Interface(Abstract) 와 Concrete Class 를 비교

A = (#abstract classes / total # of classes)

•Abstract class = interface, abstract 다 포함•Total # class = abstract class + concrete class

•0 이면 concrete class 만 있다 . •1 이면 abstract class 만 있다 .

Page 48: 아키텍트가 알아야 할 12/97가지

다시 보는 그래프

다른데서 많이 쓰는 녀석이니 조금 더

abstract 를 높여야 돼 !

Page 49: 아키텍트가 알아야 할 12/97가지

그 외 용어

•Tangled Complexity• 순환 참조가 있어 Boundary 를 깰 때

•Cyclomatic Complexity• 분기 문이 많아 hotspot 이 될 가망성이 높은 곳

Page 50: 아키텍트가 알아야 할 12/97가지

경고 !!!환자의 외부 증상만 고치는 의사가 되지 말자 !!

이러한 정보는 좋은 가이드일뿐 !! 숫자에 의존하다가 오히려 문제가 보이지 않게 된다 .

Page 51: 아키텍트가 알아야 할 12/97가지

# 조언 5 – Kevlin Henney“ 설계의 기준으로

불확실성을 사용해라 !!”

Page 52: 아키텍트가 알아야 할 12/97가지

A 와 B 사이 ..

A 와 B 두 가지 선택 중 하나를 결정하려고 시도하는 대신 ,

“A 와 B 사이의 결정을 덜 중요하게 만들기 위해 어떻게 설계해야 할까 ?”

고민해라 !!

Page 53: 아키텍트가 알아야 할 12/97가지

경험…

• 계열사의 함정 ..• 경비업체는 무조건 계열사로 .. • 하지만 .. 입주민의 요청으로 ..

• Infra 성이기에 더 큰 비용을 지출 ..

Page 54: 아키텍트가 알아야 할 12/97가지

전략적 접근 방법

•위험을 분산해라 .

•유연성을 보존해라 .

•가장 가능성 높은 것부터 먼저 구현 . 단 유연성을 잃지 말 것 ..

Page 55: 아키텍트가 알아야 할 12/97가지

당신의 아키텍쳐 ( 결정 ) 은 변한다 .

어떤 컴포넌트 ( 분할 또는 캡슐화 ) 가 결정에 의존적인 코드로부터 쉽게 변화를 수용할 수 있게 잘 나뉘어져 있는지 파악해라 .

Page 56: 아키텍트가 알아야 할 12/97가지

풀어 말하면 .

당신의 결정 ( 아키텍쳐 ) 이 올바른지 알아보려면 ,

비용을 줄일 수 있게 분할 가능한지 살펴봐라 !

Page 57: 아키텍트가 알아야 할 12/97가지

특히 ..

하위 ( 프레임워크 , 인프라 ) 단 중 . 비지니스와 밀접한 부분이 있으면

유연하게 만들어라 .

레이어 , Interface, Parameter Object

Page 58: 아키텍트가 알아야 할 12/97가지

# 조언 6 – Mike Brown“ 구현 가능한 것만 설계해라”

Page 59: 아키텍트가 알아야 할 12/97가지

주어진 문제를 우아하게 해결하기 ..

•정교한 설계와 추상화 적용

•프로젝트에 신기술 적용

•새로운 패턴 과 프레임워크 적용

Page 60: 아키텍트가 알아야 할 12/97가지

많은 부작용을 수반한다 .

•개발자의 새로운 학습곡선 .

•데모처럼 과연 신기술이 잘 될까 ?

•개발자의 신뢰를 잃게 된다 .

•불필요한 위험요소를 수반 .

Page 61: 아키텍트가 알아야 할 12/97가지

사례 .

유명 컨설턴트 A 와의 경험

차세대 시스템 경험담

Page 62: 아키텍트가 알아야 할 12/97가지

기술을 모르는 영업 상무• 기술을 모르는 영업 상무

– 비행기에서 유명 컨설턴트와 만나다 .• CBD 에 대해서 이야기를 나눔 .• 당신의 솔루션이 재사용 , 확장 가능해 진다 .

– 귀국 후 차세대 시스템 구축 • 기존 시스템 유지보수에 지친 개발자들도 환호• 개발자의 추천으로 전문가 A 를 아키텍트로 섭외 .

Page 63: 아키텍트가 알아야 할 12/97가지

전문가 A 컨설턴트와의 마찰 !

• 새로운 신기술을 적용해야 밴더 사에 잘 보이겠지 .– 맞지 않는 패턴 적용

• Enterprise Pattern 을 임베디드 시스템에 적용 .

– 정식 버전이 나오지 않은 신기술을 적용• 실시간성이 보장되어야 하는 시스템에서 첫 통신시 14 초가

걸림 .• 개발자들 왈 : “임베디드 시스템 특성을 몰라 ? … “

– 기존 기술에 익숙한 개발자들의 반발• 무엇이 좋아질지 모르는데 왜 바꿔 ?• 과연 이렇게 잘게 나누면 좋아질까 ?

Page 64: 아키텍트가 알아야 할 12/97가지

결과 !

• PM 은 왜 일정이 연기되냐며 개발자 윽박 지르기 !

• 컨설턴트 조직은 계약만료 후 나 몰라라 사라짐 .

• 결국 프로젝트 6 개월 연기 !• 시스템 오픈 후 여기 저기 문제 떠짐 .

Page 65: 아키텍트가 알아야 할 12/97가지

# 조언 7 – Mark Ramm가장 큰 문제는 기술이 아니다 .

Page 66: 아키텍트가 알아야 할 12/97가지

지금도 어디선가 실패하고 있는 프로젝트 .

•기술의 잘못된 선택 ?• Java 대신 Ruby 를 선택해서 ..• Linux 대신 Windows 를 사용해서 ..

•문제가 정말 어려워서 ?

Page 67: 아키텍트가 알아야 할 12/97가지

모든 것은 ..

It’s all about people.사람에 관한 것이다 .

Page 68: 아키텍트가 알아야 할 12/97가지

대화를 해라 .

• 대화의 기술– 정면 대결이 아니라 대화라는 관점에서 접근해라

• 사람들의 장점을 고려하고 대화해라 .

– 여러분의 태도가 올바로 갖춰진 후에만 대화를 시도해라

• 화가 나거나 짜증난 상태에서 대화하지 말아라

– 회의 시 침묵하는 사람들의 의견을 이끌어 내라 .• 특정 사람에게만 발언권이 모이지 않게 해라 .• 모든 사람의 관점을 다 들어보아라 .

Page 69: 아키텍트가 알아야 할 12/97가지

# 조언 8 – Niclas Nilsson“ 반복 작업과 싸워라 !”

Page 70: 아키텍트가 알아야 할 12/97가지

생산성을 저해하는 이유 ..

•복제는 악이다 .

•반복되는 작업 .

Page 71: 아키텍트가 알아야 할 12/97가지

계속되는 반복과의 싸움 ..

김국현의 낭만 IT - 후기

Page 72: 아키텍트가 알아야 할 12/97가지

Architect 가 줄여줘야하는 반복 작업

전 Architect 입장에서 개발자에게

박수받을 만한 기법들을 전달하겠습니다 .

Page 73: 아키텍트가 알아야 할 12/97가지

73

EA 의 간략한 소개 .• UML 2.1 Full 지원• 모델링 정보를 다양한 DBMS 와 연동하여 저장가능• 형식을 파괴하는 모델링 지원

– Use Case 에서도 Class Diagram 의 요소들을 사용가능• 다양한 언어를 지원

– C++, C#, Delphi, Java, VB, VB.NET, PHP, Python

• 강력한 코드 탬플릿 생성 기능• 테스팅 생성및 관리 ( 기존 Unit Testing 과 연동됨 )• 강력한 역공학 기능• 다양한 Plug-in 지원• 가장 저렴한 가격 1 Copy 당 20 만원 ~ 30 만원 사이

Page 74: 아키텍트가 알아야 할 12/97가지

74

EA 의 장점 .

강력한 코드 템플릿 생성 기능

몇 가지 Plug-in 소개

Legacy System 을 위한 역 공학

문서 자동 생성 템플릿 소개

통합 개발 환경 구축 방법

Page 75: 아키텍트가 알아야 할 12/97가지

75

Code Template

Page 76: 아키텍트가 알아야 할 12/97가지

76

1. StreoType 생성• Setting – UML – Streotypes

Page 77: 아키텍트가 알아야 할 12/97가지

77

2. 클래스 설계 후 StreoType 할당

Page 78: 아키텍트가 알아야 할 12/97가지

78

3. 메소드 속성에 맞는 태깅생성• 예를 들어 현재 재고를 파악하는 메소드는

Database 에서 데이터를 가져오는 (Get) 타입인 경우 .

Page 79: 아키텍트가 알아야 할 12/97가지

79

4. 코드 생성 탬플릿 작성• Settings – Code Generation Templates

다양한 언어 선택

생성할 코드 템플릿

Namespace, Class, Opera-

tion 등

스트레오 타입별 템플릿을 지정

생성할 코드 입력

Page 80: 아키텍트가 알아야 할 12/97가지

80

스트레오 타입 코드 템플릿 추가

Page 81: 아키텍트가 알아야 할 12/97가지

81

스트레오 템플릿 추가

• Import Section– DLL 이나 Namespace 를 추가하는 부분

• Operation Body– 메소드 구현 부에 사용자 코드를 추가 함

Page 82: 아키텍트가 알아야 할 12/97가지

82

간단한 예 - OperationBody%if opTag:"DataAccessType" =="get" % //데이터를 얻어오는 쿼리IDataReader reader = null;%opReturnType% retVal = new %opReturnType%();try{

// 1. Create the Database object, using the default database service.Database db = DatabaseFactory.CreateDatabase();

log.Debug("Create Database Factory");

// 2. Create DB Command string sqlCommand = "$queryName"; dbCommand = db.GetStoredProcCommand(sqlCommand); log.Debug("GetStoredProcCommand(" + sqlCommand + ")"); ….} %elseIf opTag:"DataAccessType" =="set"% //데이터를 쓰는 쿼리DbConnection connection = null;UInt32 retVal = 0;try{ ……..

82

Page 83: 아키텍트가 알아야 할 12/97가지

83

Reverse Engineering

Page 84: 아키텍트가 알아야 할 12/97가지

84

통합 개발 환경 구축하기

Page 85: 아키텍트가 알아야 할 12/97가지

85

통합 개발 환경 구축하기

Page 86: 아키텍트가 알아야 할 12/97가지

86

개발 환경 구축 – 프로세스로 디버깅 하기

Page 87: 아키텍트가 알아야 할 12/97가지

87

프로세스로 디버깅하기

Page 88: 아키텍트가 알아야 할 12/97가지

88

디버깅 내용을 Sequence Diagram 으로 생성

Page 89: 아키텍트가 알아야 할 12/97가지

89

디버깅 내용을 Sequence Diagram 으로 생성

Page 90: 아키텍트가 알아야 할 12/97가지

90

Documentation

Page 91: 아키텍트가 알아야 할 12/97가지

91

다양한 포멧의 문서 제공

Page 92: 아키텍트가 알아야 할 12/97가지

92

문서 – Class및 Sequece

Page 93: 아키텍트가 알아야 할 12/97가지

93

UNIT TESTING

Page 94: 아키텍트가 알아야 할 12/97가지

94

Unit Testing 과 연동됨• 현재 xUnit (JUnit, Nunit) 형태로

생성및 관리가 가능함 .• 다른 Unit Test 는 Package Script 로

연동가능 .

Page 95: 아키텍트가 알아야 할 12/97가지

95

Visual Studio 내장 UnitTest 셋팅법

Page 96: 아키텍트가 알아야 할 12/97가지

96

연동된 Unit Test

Page 97: 아키텍트가 알아야 할 12/97가지

97

문서 – Testing Report

Page 98: 아키텍트가 알아야 할 12/97가지

# 조언 9 – Evan Cofsky“드월프 , 엘프 , 마법사 그리고 왕”

Page 99: 아키텍트가 알아야 할 12/97가지

반지의 제왕 캐릭터 .

Page 100: 아키텍트가 알아야 할 12/97가지

반지의 제왕 캐릭터 .

드워프 - 근면한 일꾼 , 동굴 속의 어두운 고독 속에서 꾸준히 산출물을 만드는 자

엘프 – 천부적인 재능우아 , 교양있으며 , 다른 종족이 하지 못하는 마법을 만들어 냄 .

Page 101: 아키텍트가 알아야 할 12/97가지

반지의 제왕 캐릭터 .

마법사 – 강력한 종족 , 엘프와 달리 마법의 강력함과 속성을 깊이 파악해 , 놀라운 능력을 발휘

왕 – 보잘 것 없는 왕단 , 다른 종족과 무엇을 해야 할지 아는 몽상가 ( 비전을 제시 )

Page 102: 아키텍트가 알아야 할 12/97가지

왕의 역할• 왕 ( 아키텍트 ) 는 모든 종족과 친해야 함

• 아키텍쳐가 하나의 캐릭터 ( 팀원 ) 에게만 흘러가지 않도록 균형을 맞추어야 함

• 한가지 퀘스트 ( 도전과제 ) 를 위해 모든 종족 ( 이해 당사자 ) 를 이끌어 , 같이 일할수 있도록 도와야 한다 .

Page 103: 아키텍트가 알아야 할 12/97가지

서로 보완적인 능력을 가진 팀 만들기 .

Bill Gross : http://bit.ly/u4AV3r 참고자료 - 에스티마님의 글

Page 104: 아키텍트가 알아야 할 12/97가지

Bill Gross• 미국에서 가장 유명한 Serial Entrepreneur (

연속해서 새 사업체를 설립하는 기업가 ).

• 많은 Startup 을 창업하면서 , 얻은 그가 보는 성공하는 팀의 조건

• 4 가지 유형의 성격을 가진 사람들이 서로 조화를 이룬 팀은 성공한다 .

Page 105: 아키텍트가 알아야 할 12/97가지

사람의 유형 .

Entrepreneur – 창업가

새로운 것을 발명하는 사람 . 큰 그림을 볼 수 있는 사람 . 미래를 미리 준비하는 사람 .

Administrator – 관리자

질서를 만드는 사람 . 관료적일 수는 있지만 일이 제대로 되도록 룰을 만들고 실행하는 사람

Page 106: 아키텍트가 알아야 할 12/97가지

사람의 유형 .

Producer - 실제 제품을 만드는 사람

Integrator - 다른 세가지 유형의 사람들을 잘 이해하고 그들이 잘 지낼 수 있도록 도와주는 사람 . 

Page 107: 아키텍트가 알아야 할 12/97가지

4 가지 유형이 다 모인다고 성공할까 ?

지저분한 창문…

Page 108: 아키텍트가 알아야 할 12/97가지

더러워진 창문을 보며 ..

•  E(창업가 ) 는 창을 가르키며 이렇게 이야기한다 .

“저기를 보라고 !! 저기 우리가 빌딩을 지을 수 있는 주차장이 있는데…”

그는 창문자체는 보지도 않고 저 멀리 보이는 미래를 신이 나서 떠든다 .

Page 109: 아키텍트가 알아야 할 12/97가지

더러워진 창문을 보며 ..

• P( 생산자 ) 는 창문을 보며 …

“저기 창문에 보이는 스크래치와 더러워진 유리를 보라고 . 우린 저것을 빨리 청소해야 해 !!”

 

Page 110: 아키텍트가 알아야 할 12/97가지

더러워진 창문을 보며 ..

•  A ( 관리자 ) 는 “ 아니 그러지 말고 우리는 더러워진 창문이 보일 경우

사람들이 총무과에 알릴 수 있도록 신청양식을 만들어 야해 !!

그럼 그 양식을 통해 신청을 받고 순차적으로 처리하면 돼”

 

Page 111: 아키텍트가 알아야 할 12/97가지

더러워진 창문을 보며 ..

•  I ( 통합자 ) 는 아무 말도 하지않고 다른 3 사람을 보면서…

“저 3 사람의 머리 속을 들여다보고 싶다니까”

Page 112: 아키텍트가 알아야 할 12/97가지

피플웨어… .

성공하는 팀의 이상한 공통 조건 ??

Page 113: 아키텍트가 알아야 할 12/97가지

# 조언 10 – 김동열“정경유착 ( 政經癒着 )”

Page 114: 아키텍트가 알아야 할 12/97가지

아키텍트의 정치• 아키텍트는 비즈니스 목표에 맞는 시스템을

만들기 위해 , 기술과 관련된 수많은 의사결정을 하는 사람입니다 .

• 이해관계자 사이에서 정당성 (rightness),

타당성 (rational) 을 바탕으로 이해관계를 조율하고 설득해야함 .

Page 115: 아키텍트가 알아야 할 12/97가지

제품 영업 담당자• 효과적인 마케팅과 판매활동을 통해 이윤을 창출해야 하는 " 경제 " 적인 역할을 담당 .

• 맨발로 지내온 아프리카 원주민에게 구두를 팔고 , 에스키모 인에게 냉장고를 파는 영업인에게 ' 사기 쳤다 ' 고 이야기 하지는 않습니다 .

• 오히려 새로운 시장을 개척했다고 말함 .

Page 116: 아키텍트가 알아야 할 12/97가지

사례 .

아키텍트와 영업간의 이해관계가 맞을 경우 .

Page 117: 아키텍트가 알아야 할 12/97가지

영업 부장의 압력 .

• EJB 기반의 WAS – EJB 와 관계형 기반의 DB 시스템에 유리

– 요구사항• CORBA 도 넣어라• 최신제품이니 , 객체 지향 DB 도 쓰자

– 결론 “넣긴 넣었다 . 하지만 ..”• CORBA 를 어디에 적용했는지 기억도 안남 .• 객체지향 DB 일부만 적용

Page 118: 아키텍트가 알아야 할 12/97가지

또 다른 Vasa 호• 미션이 완전히 동일한 시스템은 없다 .• 모든 시스템의 목표를 만족시켜줄 아키텍쳐 , 솔루션은 존재하지 않는다 .

• 만들수 있겠지만 , 새로운 장애물이 나올경우 침몰하는 또다른 Vasa 호가 될 뿐이다 .

Page 119: 아키텍트가 알아야 할 12/97가지

결론 .

• 아키텍트는 올바른 “정치”를 하기 위해 , 정경유착의 고리를 끊고 , 특정 제품에 자유로울 필요가 있습니다 .

Page 120: 아키텍트가 알아야 할 12/97가지

# 조언 11 – Eben Hewitt고객의 고객 .. 고객을 알아라 .

Page 121: 아키텍트가 알아야 할 12/97가지

2011년 6월 24 일

Google 은 두 개의 사업을

포기한다고 발표 .

Page 122: 아키텍트가 알아야 할 12/97가지

또 하나는…

Page 123: 아키텍트가 알아야 할 12/97가지

Smart Grid 란 ?

Page 124: 아키텍트가 알아야 할 12/97가지

Google Powermeter 와 스마트그리드

Page 125: 아키텍트가 알아야 할 12/97가지

Google 이 하고 싶은 것 ..

Page 126: 아키텍트가 알아야 할 12/97가지

Google Powermeter 의 파트너들 ..

San Diego Gas & Electric? (California)TXU Energy (Texas) JEA (Florida)Reliance Energy (India)Wisconsin Public Service Corporation (Wisconsin)White River Valley Electric Cooperative (Missouri)Toronto Hydro Electric System Limited (Canada)Glasgow EPB (Kentucky)

Page 127: 아키텍트가 알아야 할 12/97가지

하지만 ..예상 외의 적수를 만나다 ..

Page 128: 아키텍트가 알아야 할 12/97가지

OpenAPI

Paper..

Page 129: 아키텍트가 알아야 할 12/97가지

Google 의 전략

Utility Provider

3rd Party

OpenAPI

Web Ser-vice

Customer

Page 130: 아키텍트가 알아야 할 12/97가지

OPower 의 전략

Utility Provider

3rd Party

OpenAPI

Web Service

Customer

Paper

Page 131: 아키텍트가 알아야 할 12/97가지

OpenAPI 를 이긴 Paper

Page 132: 아키텍트가 알아야 할 12/97가지
Page 133: 아키텍트가 알아야 할 12/97가지

Personal Touch

Page 134: 아키텍트가 알아야 할 12/97가지

Innovators 2.5%

EarlyMajority

34.0 %

Laggards16.0 %

LateMajority

34.0 %

EarlyAdapter

13.5 %

CHASM

Eager's innovation

Page 135: 아키텍트가 알아야 할 12/97가지

Know your customer

Page 136: 아키텍트가 알아야 할 12/97가지

조그만 차이가 큰 차이를 가져온다 .

Page 137: 아키텍트가 알아야 할 12/97가지
Page 138: 아키텍트가 알아야 할 12/97가지

Plant the seeds.

Page 139: 아키텍트가 알아야 할 12/97가지

OPower의 늘어나는 점유율 ..

60+ 이상의 전력회사 , 미국 Top 10 전력회사와 Cowork

Page 140: 아키텍트가 알아야 할 12/97가지

Guru on your side.&

Bit Jolt.

Page 141: 아키텍트가 알아야 할 12/97가지

얼마 지나 2010년 10월에

5000 만 달러 여러 투자자로 부터

펀딩 받음 .

Page 142: 아키텍트가 알아야 할 12/97가지

2011년 6월 24 일

Google 은 Powermeter 를 포기한다고 발표 .

Page 143: 아키텍트가 알아야 할 12/97가지

# 조언 12 – ???“컨설팅과 사과 이야기”

Page 144: 아키텍트가 알아야 할 12/97가지

컨설턴트와 컨설팅 받는 사람

컨설턴트는 이해당사자들 모두를 이해하고어떠한 benefit 을 줄수 있는지 설명해야 한다 .

컨설팅 받는 사람은 무조건 적인 저항보다는더 도메인 전문가이니 , 협상을 해 나가야 한다 .

Page 145: 아키텍트가 알아야 할 12/97가지

감사합니다 .