품질고도화를위한실용적인소프트웨어아키텍처리뷰 Part 1 : 프랙티컬아키텍처리뷰의소개와리뷰양식 2014. 5. 27. [ 제 94 호 ] Ⅰ. 아키텍처리뷰의목표와진행방향 Ⅱ. 아키텍처리뷰내용 Ⅲ. 정리
SW 공학트렌드 동향분석 Webzine Ⅰ. 아키텍처리뷰의목표와진행방향 IT 회사에서많은소프트웨어솔루션과서비스가만들어진다. 설계하는사람들의경력은천차만별이고, 그런만큼다양하게설계된다. 게다가역량을가진엔지 니어들이동일한요구사항을각각다르게이해하고다양한아키텍처를설계하며개발을진행하는식이다. 이런상황에서는무엇보다아키텍처모듈의중복을최대한줄이고모호한부분은최대한명확하게잡아주는것이중요하다. 또한보안이잘못되어있거나불분명한설계로발생되는사이드이펙트 (Side Effect) 를줄여야하는데, 아키텍처리뷰를통해이부분을최소화할수있다. 아무런문서없이수년째내려오는소프트웨어들을섣불리유지보수하기란쉽지않기때문에많은소프트웨어들이방치되고있다. 또한이런문화에익숙한사람들까지생겨서아무런설계문서 / 요구사항도없이개발하고있는현실이엄연히존재한다. 아키텍처리뷰는이러한잘못된개발문화를올바른개발문화로만드는 꼭필요하고, 기본적인 개발환경을구축하는시작이기도하다. 그림 1_ 아키텍처리뷰모임 < 그림 1> 과같이아키텍처리뷰는설계를하는실무자와담당매니저, 아키텍트 (Architect) 로구성해진행한다. 아키텍트는네트워크, 서비스, 플랫폼을잘알고있는사람으로해당분야를가이드를할수있어야하는중요한위치이다. 아키텍처리뷰는요구사항들을구현하기앞서개발할서비스또는플랫폼을설계문서로공유하고그에대한아키텍처품질을체크, 결과를피드백하는것이다. 프랙티컬 (Practical) 한아키텍처리뷰는기본적인아키텍처리뷰의형식을따르지만, 문서나일을진행하는방식을규정하 01 2014 May (No.94)
공학트렌드 기보다는개발자의자유로운형식을존중하면서진행한다. 대신정해진형식대신예제나샘플을통한가이드방식등으로쉽게표현할수있도록방법을제공한다. 따라서딱딱한틀의잣대가아닌실무환경에대해부드럽고유연한객관성이드러날수있도록한다. 결국아키텍처리뷰는아키텍처수준에서소프트웨어를검증하고다양한영역의아키텍트들이경험과지식을공유하는것을말한다. 아키텍처는무엇이고아키텍처품질은어떤방법으로체크하는가? 아키텍처는소프트웨어시스템에대한상위수준의구조를의미하며각소프트웨어요소들을정의하고그요소들간의관계를표현한다. 이런아키텍처는품질지표를따라검토받을수있다. 다음 < 그림 2> 에서볼수있듯이 ISO 9126, ISO 14598, ISO 12119 등소프트웨어품질에관한국제표준을기준으로아키텍처품질속성을정의하고있다. 다만본지표를통해소프트웨어품질의특성을리뷰할수있다고해도, 품질자체에만너무치중하면리뷰의속도가저하되는것은물론리뷰문서를작성하는사람으로서는막막하거나단지일을위한일이될수있다. 때문에누구나쉽게이해할수있도록품질특성을강조할필요가있다. 그림 2_IOS/IEC 9126-1 아키텍처품질지표 출처 : www.tta.or.kr/data/reportdown.jsp?news_num=2564 품질속성에대해서하나하나측정하는것이쉽지않다. IOS/IEC 9126-1 아키텍처품질지표는품질속성을점수로평가하는것이아닌실무적인관점에서보다현실적인이슈를논의하고함께해결하기위한방안또는가이드를제시하는것을그바탕에두고있다. 따라서아키텍처리뷰는점수만매기는수준에그치는것이아니라협업하는동료로서함께문제의도메인을이해하고, 서로도와줄수있는부분을체크한다. 또한 02
SW 공학트렌드 동향분석 Webzine 중복적인개발을줄이며사전에이슈를파악할수있도록하는것이프랙티컬아키텍처리뷰라고할수있다. < 그림 3> 과같이아키텍처리뷰는개발이완료되기전에소프트웨어개발관점뿐아니라운영관점도중요시여긴다. 그림 3_ 소프트웨어를바라보는개발관점 / 운영관점 아키텍처리뷰는아키텍처를다양한관점에서볼수있도록하고, 잠재된위험요소및이슈들을설계단계에서조기발견하여높은품질의소프트웨어를유지보수할수있도록기초를마련한다. 또한프로젝트간에빈번하게발생하는중복개발사례를피할수있도록한다. 좋은품질로설계한사례는칭찬 / 도입 / 전파하여소프트웨어의실질적인품질향상및효율적인리소스사용을주는좋은사례로만들수있다. 창의력이높은개발자의좋은아키텍처를통해다른실무자들에게업무에대한동기부여는물론긍정적인도전을받을수있다. 현장에서배운좋은사례, 일명베스트프랙티스 (Best Practice) 들이그동안혁신의사례로나온경우와비슷하다고할수있을것이다. 프랙티컬아키텍처리뷰의핵심 (DO / NOT DO) 은다음과같다. DO - 개발초기에중요한의사결정방향을정한다. - 보안, 확장성, 가용성과같은품질을속성을고려한다. - 의도가정확해야한다. NOT DO - 리뷰자체를위한문서를작성하지않는다. - 잘모르는 UML 을쓰고자하는노력은하지않는다. - 상세화를하지않는다. 즉, 적당한수준의추상화를추구한다. < 그림 4> 에서처럼회사에서개발 ( 또는외주를주는모든프로젝트 ) 하는프로젝트를소프트웨어아키텍처설계단계에서최소한번이상리뷰를수행하도록한다. 이를통해검증하고이후기술관련자문및지원을받을때에도계속요청하면아키텍처리뷰를실시할수있도록한다. 결함이최소화될수있는수준의아키텍처를설계하도록지원한다. 03 2014 May (No.94)
공학트렌드 그림 4_ 아키텍처리뷰시행시기 아키텍처리뷰의목표는 < 그림 5> 와같이좋은성능과좋은품질, 글로벌소프트웨어 가될수있는아키텍처를지원하는것이다. 그림 5_ 아키텍처리뷰의목표 또한리뷰문서는최소한으로하여업무의부담을주지않을정도로결정되어야한다. 잘모르는 UML 이나단계별상세화는하지않는다. 따라서아키텍처는개발 2~3 년차가이해하는수준으로나타낼수있어야하며, 어떠한툴 (Tool) 을써도상관없도록가이드한다. Ⅱ. 아키텍처리뷰내용 저 자의실무환경은 Web, WAS / SmartPhone 이가장많이개발되는환경이라아키텍처리뷰의관점이이부분으로쏠려있고, 회사내아키텍처자산을공개 할수없는관계로외부링크와개념적으로만설명함을양해바란다. 원활한이해를위해시스템아키텍처, 어플리케이션스택아키텍처, 시스템구성및 04
SW 공학트렌드 동향분석 Webzine 네트워크아키텍처, 서비스흐름도와같은소프트웨어아키텍처와 ERD(entity-relationship diagram) 와같은 DB 스키마리뷰로나누어살펴보고자한다. 소프트웨어아키텍처와관련된 4개의아키텍처다이어그램은 UML 을써도되고특정툴에얽매이지않도록자유롭게표현하도록했다. 또한나누어진아키텍처다이어그램으로보이지않고, 자유롭게시스템아키텍처와어플리케이션스택아키텍처를동시에보여줄수있도록했다. ERD 는 Mysql Workbench 나 ERWin 과같은 DB Modeling 툴을사용해서쓸수있도록가이드했다. 2.1 시스템아키텍처 시스템아키텍처는외부시스템과의연동구조를포커스로다룬다. UML 의클래스다이어그램으로표현할필요없이아키텍처전체를다루고실행단위와데이터의흐름을개념적으로보여주도록한다. 애플리케이션또는전체시스템의상위레벨컴포넌트및그들간의관계를식별하도록한다. 세부내용이아닌시스템을적절히추상화하여분할한다. 개발 / 스테이징 / 운영서버의아키텍처가모두같으면하나로표현을할수있으나, 개발서버와운영서버의구조가다르다면나누어서설명해야한다. 예를들어표현할때아래표의요소관점으로설명하면좋을것이다. 분류 Communication Data Storage Node Network 내용 Sync/Async(Queue,Comet), Pub/Sub, cookie/session/oauth, json/xml/raw/rest, keepalive 여부, http/https/ 암호화방식 DBMS(Oracle, Mysql), Nosql (MongoDB,Hbase,Redis) Client/Server, 내부 / 외부시스템 Firewall in/out < 그림 6> 의예시처럼스토리지 (storage) 와서버 (server) 관점의전체적인아키텍처를대 용량관점에서쉽게이해할수있게한다. 05 2014 May (No.94)
공학트렌드 그림 6_Line Storage 출처 : http://tech.naver.jp/blog/?p=1420 < 그림 7> 은 VMWare의 vcloud 아키텍처를쉽게이해할수있다. Front Server, Backend Server, Message Bus, Web Server, Storage 간의관계를볼수있다. 그림 7_VMWare vcloud Architecture 출처 : http://kb.vmware.com/selfservice/microsites/search.do?language=en_us&cmd=displaykc&externalid=1030954 06
SW 공학트렌드 동향분석 Webzine 2.2 어플리케이션스택 (Stack) 아키텍처 중요컴포넌트에대한어플리케이션스택의구조를설명한다. 구현할시스템의주요컴포넌트의스택아키텍처와연동하는중요노드 (Node) 간의관계를식별한다. 컴포넌트와노드간의관계는간단히표현한다. 주요컴포넌트는스택형태로세부내용이들어가야하며, 통신하는외부시스템의노드는간단히표현한다. 분류 Solution Open Source Open Source/Commercial Product 내용 PHP/Java, Apache/Nginx, Tomcat/Jetty/Netty, MVC Framework, json/xml parser, connection pool, message platform, cache lib < 그림 8> 의예는 WAS 를어떻게구성했는지에대한그림을보여준다. Spring 과 Hiberat 를이용하여구성했음을확인할수있다. 그림 8_Hibernate 와 Spring 을이용한 Stack Diagram 출처 : http://mashupfactory.wordpress.com/2008/02/12/application-architecture < 그림 9> 의예처럼만약오픈소스가아닌 3rd Party Framework 인 Revize Framework 을쓰는경우인데, 시스템아키텍처와어플리케이션스택아키텍처를동시에그림으로보여줄수있는예제이다. 07 2014 May (No.94)
공학트렌드 그림 9_Revize Server Application 아키텍처 출처 : http://www.revize.com/technical_architecture.html 2.3 시스템구성및네트워크아키텍처 단말부터서버, 스토리지단까지의시스템 / 네트워크구조관점으로설명한다이어그램이다. 시스템구성및네트워크장비관점으로본구성요소를보여준다. 네트워크레이어 (Layer) 단위로네트워크장비의가용성및서버가용성및스토리지가용성을확인할수있다. 필요하다면가용성에대한상세대처방안에대한시나리오를추가할수있다. 분류 Server Network Zone Stroage 내용 Server Spec L4(L7) / Zookeeper Firewall in/out, IDC location, Firewall Zone Oracle RAC/Mysql MMM, NFS/SAN, RAID, DRBD < 그림 10> 은 AWS 를이용한아키텍처구성안이다. Route 53 과 ELB 를통해서서버요청 을받고 US West 와 Europe 에서버와 DB 를두고 Replication 하는방식을설명하고있다. 08
SW 공학트렌드 동향분석 Webzine 그림 10_AWS 를이용한 Onlie Cruise Company 시스템구성도 출처 : http://yourstory.com/2012/08/geo-distributed-architecture-using-route53-lbr-part-2 2.4 서비스흐름도 주요한유즈케이스 (UseCase) 의 Conceptual 한흐름도를설명하는것이다. UML 의 Sequence 혹은 Activity 다이어그램과비슷한개념을가지고있다. 시나리오를이해할수있는수준의서비스흐름도를보여준다. 구성요소, 하위시스템, 행위자인스턴스간의메시지시퀀스를 Conceptual 하게보여준다. 클래스단위가아닌흐름과구현요소에집중한다. 모든내용을보여주기보다는주요한내용으로보여줄수있도록한다. < 그림 11> 과같이액티비티 (Activity) 다이어그램으로보여줄수있고, < 그림 12> 와같이시퀀스 (Sequence) 다이어그램으로보여줄수있도록한다. 어느타입으로어느툴로그려도이해할수있는형태로되게한다. 09 2014 May (No.94)
공학트렌드 그림 11_ 액티비티 (Activity) 다이어그램예제 출처 : http://pagesperso.lina.univ-nantes.fr/~molli-p/pmwiki/pmwiki.php/main/umltd2 그림 12_ 시퀀스 (Sequence) 다이어그램예제 출처 : https://www.smartdraw.com/examples/view/shopping+cart+sequence+diagram 10
SW 공학트렌드 동향분석 Webzine 2.5 ERD (Entity-Relation Diagram) ERWin 또는 Mysql Workbench 와같은 DB 모델링 (Modeling) 툴을이용하여만든개체- 관계모델이고, 구조화된데이터에대한표현다이어그램이다. 완벽하게세세한 ERD 가아닌 Key Attribute 가포함된 Conceptual 한 ERD 의수준을의미한다. 테이블내용만으로이해를할수없을것같다면내용을서술하는것도좋다. < 그림 13> 과같이 Mysql Workbench 으로만든핵심포인트만적용한 ERD 를만든다. 그림 13_Mysql Workbench 로만든 Entity Relation 다이어그램 출처 : http://superiorwebsys.com/blog/58/what_is_erd_and_why_is_it_important_in_website_development Ⅲ. 정리 지 금까지아키텍처리뷰의의미와아키텍처리뷰시소개할다이어그램 5개를소개했다. 아키텍처리뷰를통해개발자와아키텍트들이함께개발전에성능 / 보안 / 확장정보를확인하여이슈를체크해볼수있다. 또한중복되는컴포넌트사용도사전에방지할수있으며, 사전협의를통해비논리적인부분을파악할수있다. part 2에서는아키텍처리뷰를통해어떻게품질을평가할수있는지살펴보고체크리스트, 사례등을살펴볼예정이다. 11 2014 May (No.94)