IT 기술 개념 정리

Software Architecture - SW 계층 구조화

thisness 2018. 9. 23. 00:54

TCP/IP 기반의  네트워크의 발전으로  SW는  Stand Alone  방식의 어플리케이션에서 

클라이언트와 서버로 역할을 분리 되어 질수 있었다. 


클라이언트 - 서버의 분리로 인하여 하나의 (능력있는 ) 서버가  여러 클라이언트에 대한 서비스 제공 또는 데이터의 제공이 가능하게 되었고

이로 인하여 클라이언트에서 제공되었던 기능 중 공통적인 기능이나  보안이 필요한 기능등을 서버로 이전할수 있었고 

더불어 많은    컴퓨팅 리소스 ( CPU 또는 메모리 ) 를 필요로 하는 기능을 서버로 인전함으로써 클라이언트 컴퓨터의 부담을 덜수 있었다. 


다만 이로 인한 부작용은  서버 측 SW 는 더욱 많고 복작한 기능을 처리 해야 하고 이로 인한 효율적인 관리 ( 운영 유지보수 의 간소화를 포함) 에 대한

고민이 필요하게 되었다. 





이러한 고민의 결과  SW 내 주요한 역할의 분리와 독립화의 개념이 도입되어  계층구조적 아키텍쳐가 고려되었고 

대용량 기업형 SW 의 경우  Tier 구조까지 확대 되었다 

* Tier 는 단순ㅣ "단계"로 번역되다 보다는 Layered Architecture  가  단일 시스템 내에서 SW 간의 계층 구분으로  정의 되어 진다면 

Tier 구조는 역할이 다른 SW를 시스템 단위로 구분하여 배치되는 것으로 정의 할수 있다. 


1.  Layered  Architecture




The layered architecture is utilised for a number of different factors. A layered approach allows developers to separate concerns and loosely couple components that interact with each other. The advantage of this approach when implemented optimally is that layers may change independently without impacting the rest of the application. There are also cases where a layered architecture may consist of a layer that is shared across multiple other layers. An example of this is a shared domain that is utilised throughout the application. The layered architecture implies that the various layers reside within the same application container.


< 예시 >




2.. Tiered  Architecture





The tiered architecture is very similar to the layered architecture. It consists of the same pattern and characteristics. The terminology “tier” is mapped to the terminology “layer”. The key difference between a layered architecture and a tiered architecture is that each tier resides on a different physical or virtual environment. This implies that tiers that interact with each other consist of different deployments and environments.


< 예시 >



  • 클라이언트 - 서버 구성에서의 Performance Tunning


클라이언트 - 서버 구성에서는  다수의 클라이언트를 하나의 서버에서 처리하기 위한 성능이 중요시 된다. 


이를 위해 

서버측에서는  

하나의 클라이언트 요청을 수신한 이후 이를 별도의 Thread (또는  Process ) 에서 처리 완료토록 하고 , 다른 클라이언트의 요청을 수신하는 방식을 사용한다. 

이런 기술방식을  Multi- Thread 방식이라고 하는데  동시에 처리가능한 클라이언트의 수를 생성할수 있는 Thread 의 수를 늘이는 방식으로 증가 시킬수 있다. 





클라이언트 관점에서는  성능 개선의 포인트로는 Asynch (비 동기) 방식의 처리를 고려 할수 있다. 

이는 서버로 요청한 응답이 도착하기 전  처리 가능한 다른  기능을 수행하고 서버의 응답을 대기하고 있지 않음으로 전체적인 

클라이언트에서의 처리 시간을 단축 시킬수 있다.