Pattern-Oriented Software Architecture Summary :: 2021/01/20 14:46
- Pattern Architecture = Architectural Style
- Pattern은 다음 3가지로 분류될 수 있음
- Architectural Pattern / Framework Pattern : Highest Level of abstraction in software pattern. 전체 시스템 차원의 구조와 관계에 대한 정의
- Design Pattern : collection of class or subsystem을 통해 문제를 해결하는 방법에 대한 서술
- Idiom (표현 양식, 언어) : the lowest level of pattern. 특정 프로그래밍 언어로 어떻게 개발되는지에 대한 코드 레벨
- 다만, MVC와 같이 위 3가지 카테고리로 분류하기 어려운 패턴도 등장. 한계가 있음.
- Pattern-Oriented Software Architecture
- Software 개발에 대한 또다른 접근 방법
- POSA에서는 아키텍처를 다음 4가지 그룹으로 분류함
- From Mud to Structure Category
- 시스템의 전체 task를 상호 동작하는 컴포넌트, subsystem, 레이어로 분해
- Layers Pattern
- Task를 서로 다른 Layer로 분리. 각각의 Layer는 특정 수준으로 추상화.
- 크고 복잡한 시스템을 구현하기 쉽게 분리 가능
- 유지보수성과 확장성 측면에서 강점
- 비싼 시스템 리소스는 단점
- Blackboard Pattern
- 여러 개의 특정 subsystem을 결합하여 각각의 솔루션에 대한 지식을 활용.
- 결정적인 솔루션을 가지고 있지 않은 경우에 적합
- 서로 연관이 없는 컴포넌트나 subsystem의 집합
- 복잡한 에러 핸들링에 효율적임
- Pipes & Filters Pattern
- Stream data 처리 시스템에 대한 구조
- 데이터 처리에 여러 단계의 step/pipe 순차적인 처리.
- 각 pipe 프로세스는 filter를 포함하고 있음.
- 데이터는 pipe와 filter를 통과. 데이터 처리는 빠르지만, 데이터 처리에 대한 오버헤드와 static 정보 공유에 비용이 비싸고 flexible하지 않다. (유연하지 않음)
- XML Streaming 데이터 처리와 같은 경우에 적합
- Distributed System Category
- 분산 어플리케이션에 대한 완전한 구조 제공
- Broker가 유일한 패턴임
- Pipes and Filters 패턴이나 Microkernel 패턴도 카테고리에 속하지만, 다른 카테고리에 더 적합함
- Broker Pattern
- 분산 시스템에서 주로 사용하는 패턴
- 원격 서비스를 호출하는 decoupled component에 대한 시스템 구조
- Client / Server 간 더 좋은 decoupling을 제공할 수 있음
- 변경성, 확장성, 위치 투명성 등 많은 장점이 있지만 디버그와 테스트가 어려움
- CORBA : Common Object Request Broker Architecture에 사용
- Interactive Systems Category
- 인간과 컴퓨터간의 상호작용과 같은 software 시스템 구조.
- 인간의 상호작용을 handling하는 데 초점
- Model-View-Controller Pattern과 Presentation-Abstraction-Control Pattern이 이 카테고리에 속함
- MVC Pattern
- 시스템을 Model, View, Controller 3가지 파트로 분리
- Model : 전체 시스템이 어떻게 동작하는지 설명
- View : 모델이 어떻게 보여지는지 설명
- Controller : 시스템과 User 사이 상호작용 제공
- 유지보수성과 확장성을 증대시키지만, 디자인 복잡성도 증가함
- 잘 알려진 예제는 smalltalk 아키텍처
- PAC Pattern
- 협업 에이전트(cooperating agent)의 계층 형태(hierarchy form)로 software system간 상호작용 구조를 정의
- 각 agent는 특정 application function에 대해 책임을 지는 3개의 컴포넌트(presentation, abstraction, control)로 이루어져 있음
- 인간과 컴퓨터가 상호작용할 때, functional core와 다른 agent와의 communication을 분리함
- Adaptable System Category
- 시스템은 시간이 지나감에 따라 발전하여 디자인이나 기능이 변경됨
- Adaptable System(적응형 시스템)은 Application의 확장과 개발된 기술의 조정, 기능 요구사항의 변경으로 이러한 문제를 극복함
- Microkernel Pattern
- Microkernel Pattern은 확장된 기능성과 고객별(customer-specific) 파트(part)로부터 최소 기능 코어를 분리.
- 확장 기능을 연결하고 협업을 조정하는 소켓을 제공.
- 다른 프로세스에서 실행되는 컴포넌트간 서로 통신 가능.
- 카네기 멜론 대학에서 개발된 mach(마하) 운영 체제가 이 패턴을 사용.
- Chorus 상용 시스템도 이 패턴을 사용.
- Reflection Pattern
- Reflection Pattern은 소프트웨어 시스템이 구조와 동작을 동적으로 변경하는 메커니즘 제공
- Type structure (유형 구조), date element (날짜 요소), function call(함수 호출) 메커니즘 수정 지원
- 이 패턴에서 application은 Meta level, Base level 2 분야로 분리됨
- Meta level : 소프트웨어 자체를 인식하고, 선택된 시스템 속성에 대한 정보를 제공
- Base level : Application Logic을 담당. Implementation은 meta level에서 유지.
- 결론
- 시스템 아키텍처는 사용 가능한 아키텍처 패턴과 그 사용법을 이해해야 함
- 시스템 아키텍처를 설계할 때, 인간과 환경적 요소들도 중요
- 프로젝트 수행 시, 예산과 아키텍처의 아름다움 아래 프로젝트에 사용할 수 있는 회사 정책, 리소스는 사용된 아키텍처 패턴이 아니라 아키텍트에 의해서 결정됨.
Cent OS 7 Desktop 크롬 브라우저 설치 :: 2020/10/27 22:56
Cent OS 7 Desktop에서 크롬 브라우저를 설치하기 위해서는 다음과 같은 순서로 실행한다.
1. 터미널에서 크롬 브라우저 다운로드
wget https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm2. 다운로드 받은 크롬 브라우저 설치
yum -y install google-chrome-stable_current_x86_64.rpm
3. 설치된 크롬 브라우저 실행
상단 왼쪽 [프로그램] > [인터넷] > [Google Chrome] 메뉴 클릭
multiple ping test in windows batch file :: 2020/10/05 21:49
윈도우즈 batch 파일에서 여러 서버에 ping test하는 스크립트를 작성해 보자.
우선 배치 파일은 2개가 필요하다.
- ping_server.bat 파일 : 하나의 서버 주소를 인자로 받아서 ping 테스트를 수행하고, 결과를 로그로 저장하는 파일
- multiple_servers.bat 파일 : 서버 목록이 저장되어 있는 파일을 읽어서, 서버 개수만큼 ping_server.bat 파일을 실행하는 파일
ping을 테스트하는 서버 목록은 servers.txt 파일에 작성하여 저장한다.
각각의 배치 파일은 다음과 같이 스크립트를 작성한다.
<ping_server.bat>
@echo offREM set /p addr=Address:set addr=%1@echo Ping Test for : %addr%:loopfor /f "delims=" %%a in ('ping %addr% -n 1 -l 1024 ^| findstr "TTL out"') do echo %date% %time% - %%afor /f "delims=" %%a in ('ping %addr% -n 1 -l 1024 ^| findstr "TTL out"') do echo %date% %time% - %%a >> %addr%.logtimeout 1 > NULgoto :loop
또는
<ping_server.bat>
@echo offset addr=%1@echo Ping Test for : %addr%ping -t %addr%|cmd /q /v /c "(pause&pause)>nul & for /l %%a in () do (set /p "data=" && echo(!date! !time! !data!)" >> %addr%.log
<multiple_servers.bat>
@echo offset /p file=Server List File:FOR /F %%I IN (%file%) DO START cmd /k ping_server.bat %%I
Windows PowerShell 창을 띄운 후, multiple_servers.bat 파일을 실행하면 Server List File을 입력할 수 있다.
그 때, 서버 목록이 저장되어 있는 servers.txt 를 입력하면, 서버 목록 수만큼 cmd 창이 뜨고 ping 테스트를 1초에 한번씩 실행하여 로그에 저장한다.