2011.03.08.Tues 아키텍처 발전역사

방법론로그/OOAD 2011. 3. 8. 23:30




소프트웨어 아키텍처는 연결되는 노드(컴퓨터)의 구성,  그로 인한 데이터 보안성과 공유성, 그리고 
데이터와 (처리)절차의 관점에서 바라보면 그 흐름을 쉽게 이해할 수 있다. 이 점에 초점을 맞추어 아키텍처의
발전역사를 알아보자. 


1. standalone
가장 초기의 SW 아키텍처로  독립적인 머신 단일머신에서 동작하는 형태이다.  
하나의 컴퓨터에 (프로그램의) 절차와 데이터가 모두 존재한다.
 


단일머신에 데이터가 존재하기 때문에 보안적으로 안전하지만, 해당 PC 사용자만이 데이터를 사용할 수 있다. 
즉 데이터의 공유성이 좋지 않다.  공유성 문제를 해결하기 위해 2-Tier 아키텍처가 등장하게 된다. 



2.  2-Tier
절차를 가지는 노드와 데이터를 가지는 노드가 분리되어 네트웍으로 연결된 아키텍처이다.
다수의 공유가 가능하게 되었지만,  다수의 사람들이 동일한 데이터에 접근하여 수정하여 되면, 데이터가 망가지게 된다. 
그래서 DataBase를 관리하는 시스템인 DBMS(DataBase Management System)을 두어,  동시 사용자들간에도 데이터를 이상없이
(무결성) 다룰 수 있도록 한다.  (Data+Base는 Data를 저장하고 있는 기지라는 의미를 갖는다. )
 



공유성 문제는 해결이 되었지만,  처리절차의  변경 요구사항이 생겼을 때,  모든 클라이언트 모두를 업데이트 해주어야 한다. 
유지보수의 관점에서는 엄청난 비용이 드는 문제점이다. 문제의 원인은  변경의 대상이 되는  절차가 모두 클라이언트 내에 
존재하기 때문이다. (비지니스 로직을 포함하는 이런형태의 클라이언트를 Fat 클라이언트라 한다.)
이 문제를 어떻게 해결하였을까? 다음 세대의 아키텍처를 알아보자.  



3. 2-Tier + Procedure
처리절차(비지니스 로직)를 Database에  포함시키도록 하여 유지보수 문제를 해결하였다.  처리절차를 다루는 요소를 
Procedure 라고 하며,  대부분의 현대 DBMS 에 지원하고 있다.  클라이언트는 처리로직을 가지고 있지 않으며, 단지 
Database에 접근하기 위한 인터페이스로서만 동작하게 되며 이런 형태를 Thin 클라이언트라 한다. 
(초창기 데이터베이스 시장은 Informix가 선점하고 있었으나,  Oracle 이 Procedure를 통해 시장 주도권을 장악할 수 있었다.)


유지보수의 문제를 멋지게 해결해주었지만, 그에 따른 문제가 발생하였다. 인터넷의 등장 그리고  클라이언트 PC 의 급증으로
절차와 데이터가 함께 있는  형태는 장점이자 시스템의 속도를  너무 느리게 하는 단점으로 작용하였다.  이 문제를  어떻게 
어떻게 해결하였을까? 다음세대의 아키텍처를 알아보자.  




4. 3-Tier
결합되어 있는 처리절차를 다시 분리하여, 처리절차를 전담하는 AS(Application Server)에 할당하여 구성한 아키텍처 형태이다. 
이후에는 다수의 AS 노드와  DataBase 노드를  클러스터링하여 병렬시스템으로 구축한 소위 N-Tier 아키텍처가 유지된다. 





5. 아키텍처의 발전역사
지금까지 알아본 아키텍처의 발전역사를 전체흐름은 아래 그림과 같다. 



(처리)절차와 데이터의 관점으로 보았을 때,   아키텍처 발전의 역사는 정반합의 연속임을 알 수 있다.  
(정반합이란 헤겔의 변증법을 도식화한 논리전개 방식의 하나) 

절차와 데이터가 한데 모여 있었던 standalone에서는 데이터 공유문제를 해결하기 위해 데이터와 절차를 2-tier구조로 
분리하여 해결하였다. 하지만 공유의 문제는 해결했지만,  유지보수성 문제가 발생하였다.  해결책으로 분리된 절차를
데이터베이스의 Procedure 형태로 결합하여 해결하였다. 하지만, 인터넷의 등장과 수많은 사용자들의 발생으로  데이터와 
절차의 결합은 다시 성능의 문제를 가져왔고, 절차를 AS(Application Server)로 분리하여 이 문제를 해결하였다. 
이상과 같이 아키텍처의 역사를 절차와 데이터의 관점에서 정반합의 연속으로 바라보면 이해하기 쉬워진다. 













컴퓨터의 신호전달 과정 
그 옛날 정보전달을 위해 사용되었던 봉화 => 불꽃 연기의 피어오름의 유무를 통해 정보전달 하였다. 
이때 불꽃이 어디서 피어오르는지(불꽃의 위치), 불꽃의 개수, 불꽃의 순서가 중요한 의미를 가지게 된다.  
(이진수를 사용한 정보전달의 시초) 




컴퓨터 내외부에서 일어나는 모든 정보전달은 전기를 통해서 일어난다.  키보드 자판을 두드려서  일어난 신호는 
전선을 통해 컴퓨터에 전달이 되며, ADC(Analog Digital Converter)에 의해 디지털 신호로 변경된다.  이 데이터는 
메모리 공간에 저장이 되며, 두뇌가 되는 CPU에 의해 해석이 된다. 
출력은 CPU에 의해 출력정보가 메모리에 저장이 되며, 이 정보가 Driver를 통해 아날로그 신호로 변환되고,  다시 전선을
통해 모니터로 전달이 된다. (모니터에선 다시 디지털로 변경하여 최종출력을 할것이다.)

메모리에 대한 접근은 반드시 OS를 통해서 이루어진다. 사용자는 직접적으로 메모리에 접근할 수 없다. 



HAL과 Driver
Driver는 HAL(Hardware Abstract Layer)의 구현체이다. 동일한 운영체제가 다양한 머신에서 동작하기 위해서는 각각의 머신을
제어할 수 있는 정보를 알고 있어야 한다. 하지만 수많은 하드웨어 정보를 운영체제가 포함하기에는 정보량이 너무 많아지게
된다.  그래서 HAL이라는 추상화 계층을 두어 운영체제는 특정 하드웨어에 종속적이지 않는 명령으로 하드웨어와 통신하려
한다.  각 하드웨어 제조사들이 제공하는  HW 제어정보를 담은 Driver는 이  HAL 계층에 결합 되어 실제적으로 하드웨어를
제어하는 나머지 퍼즐조각으로서 기능한다.   kenerl 입장에서는 HAL로 인해  어떤 하드웨어를 사용하는지 모르고도, 미리
정해진 표준화된 규칙을 통해 하드웨어를 제어할 수 있게된다. 
ex) 누가 일을 하는지에 상관없이 일을 할수 있게된다. 




API(Application Programming Interface) 
무엇인가 컴퓨터의 기능을 사용하기 위해서는 반드시 OS를 거쳐야 한다. 그리고 기능들은 각각 일련의 절차들로
구성되어 있다.  OS의 기능을 사용할 수 있도록, 절차들을 묶어내어 제공하는 것이 API이다. 
ex) 일이 어떤  절차로 구성되어 있는지 상관없이 그 일을 할 수 있게된다. 

※ 추상과 인터페이스는 프로그래밍에서 중요한 의미를 갖는다. 추상과 인터페이스가 무엇이며, 이들이 어떻게 
다르며 어떤경우에 사용되는지를 잘 알아두자. 



알고리즘 vs  자료구조
알고리즘과 자료구조는 어떻게 다른가? 
알고리즘이란 문제를 해결하는 절차이다. 문제를 다루다 보면 데이터를 다루게 다루게 되며, 이 데이터를 어떻게 
정리하느냐에 따라 문제해결을 빨리 할 수도, 느리게 할 수도 있다. 즉 자료구조란 문제를 빨리 해결하기 위해 데이터를
정리하는 방법이라 할 수 있다. 데이터란 절차 안에서만 그 의미를 갖기 때문에 절차로서의 알고리즘과 데이터로서의
자료구조는 뗄수야 뗄수 없는 관계에 있다. 






[OOAD] 아키텍처, IA , 화면기준안, 스토리보드

방법론로그/OOAD 2010. 12. 13. 19:42


 

이 포스트에서는 아키텍처와 UI 디자인 단계의 산출물에 대해서 간략하게 알아볼 것이다..

아키텍처가 결정됨과 동시에 Programming 설계와 더블어 UI 설계를 시작하게 된다. UI 설계 단계의 산출물에는 

 IA, 화면기준안, 스토리 보드가 존재한다.  이들 하나하나에 대해서만 알아볼 것이며, 이것들을 하나의 흐름으로 

연관지어 설명하지는 않겠다. 이런것들이 무언인지만 파악하고, 추후 포스트에서 전체적인 흐름을 설명하겠다. 

 

1. 아키텍처(Architecture)

성능과 안정성 등과 같은 비기능적인 요구사항을 만족시키 위한 것으로, 시스템의 S/W 및 H/W 의 전반적인 구성을 포함한다.

흔히 stand alone, 2-tier , 3-tier, 혹은 웹 아키텍쳐, 애플리케이션 아키텍처 등과 특정 목적을 달성하기 위해 최적화된  소프트웨어

및 하드웨어의 구성을 의미한다. 

 stand alone : 단일 PC에서 동작하는 구성

 2-Tier : client와 데이터 및 그것을 처리하는 비지니스 로직을 갖는 DB, 2개 층으로 구성되는 시스템

 3-Tier : 비지니로직를 갖는 DB에 대한 부하를 분산하기 위해, 비지니스 로직을 WAS(Web Application Server)에 별도로                                 분리해 3개층으로 구성되는 시스템 형태. 여러 대의 WAS 를 마치 하나처럼  클러스터링하여 부하를 분담한다 

웹 아키텍쳐: 시스템의 접근이 웹으로 이루어지는 구성

애플리케이션 아키텍처: 시스템의 접근이 애플리케이션을 통해 이루어지는 구성

엔터프라이즈 아키텍처 : 시스템의 접근이 웹과 애플리케이션을 통해 이루어지는 구성

 

 

2. IA(Information Architecture)

인간이 소프트웨어를 이용하여 정보, 즉 Contents와의 접점에서 사용자가 편리하게 고민하지 않고  정보를 찾아 지식을 얻어 

갈 수 있도록 정보를 배치하는 과정 


 

3. UI 기준안

화면 구성의 전체적인 레이아웃과 일관적인 컨셉을 결정하는 단계



4. 스토리보드(Story Board)

IA와 UI 기준안을 바탕으로 각 서비스(기능)의 화면요소들을 배치하고 구성해보는 과정 

 


5. 그 외 용어

1) EJB(Enterprise Java Beans)

네트웍 커넥션 자원(Dao)과, 비지니스를 로직을 갖는 컨트롤러(Manager)와 같은 객체자원을 원격에서 대신 관리해주는

엔터프라이즈 서버 프레임웍. 

네트웍 커넥션은 Entity Bean, 비지니스 로직 컨트롤러는 Sesssion Bean으로 관리된다


2) Fail Over

프로세서, 서버, 네트웍 또는 데이베이스 등이 고장, 또는 유지보수시 시스템이 중단되는 것을 막기위하여

두 개의 이상의 시스템을 중복 구축하고, 고장, 유지보수 하는 1차 시스템의 기능을 그대로 2차 시스템이 수행하는 구조

(사용자에겐 아무일도 없었다는 듯이 인식된다)

 

3) RAC (Real Application Cluster)

여러대의 병렬 DB들을 마치 하나의 DB인 것처럼 사용할 수 있는 오라클 DB 클러스터링 기법

데이터베이스의 확장성과 성능향상의 장점이 있다.  


  • 뽀&쏭 2016.02.03 13:40 신고 ADDR 수정/삭제 답글

    핵심만 잘 정리되어 있어서 좋아요. ^^