현행 시스템 파악
01. 현행 시스템 파악
1) 현행 시스템 파악의 개념
- 현행 시스템이 어떤 하위 시스템으로 구성되어 있는지 파악
- 현행 시스템이 제공하는 기능이 무엇인지 파악
- 현행 시스템이 다른 시스템들과 어떤 정보와 데이터를 주고받는지 파악
- 현행 시스템이 어떤 기술 요소를 사용하고 있는지 파악
- 현행 시스템이 사용하고 있는 소프트웨어 및 하드웨어는 무엇인지 파악
- 현행 시스템의 네트워크는 어떻게 구성되어 있는지 등을 파악
2) 현행 시스템 파악의 목적
- 현행 시스템 파악을 통하여 개발하고자 하는 시스템의 개발 범위 및 개발 방향성 설정에 도움을 주는 것
3) 현행 시스템 파악 절차
1단계 : 시스템 구성/기능 현황 및 인터페이스 파악
- 현행 시스템의 구성 및 현황을 파악
- 현행 시스템의 기능을 파악
- 현행 시스템의 인터페이스 현황을 파악
2단계 : 시스템 아키텍처 및 소프트웨어 파악
- 현행 시스템의 아키텍처를 파악
- 현행 시스템의 소프트웨어 구성을 파악
3단계 : 하드웨어 및 네트워크 파악
- 현행 시스템의 하드웨어 현황을 파악
- 현행 시스템의 네트워크 구성을 파악
02. 시스템 구성/기능 현황 및 인터페이스 파악
1) 현행 시스템 구성 현황
- 정의
- 현행 조직의 주요한 업무를 처리하는 동안의 업무와 이를 지원하는 업무로 구분하여 기술한 것
- 고려사항
- 각 업무에 속하는 단위 업무 정보 시스템들의 명칭, 주요 기능들을 명시
- 현행 조직 내 존재하는 모든 정보 시스템의 현황을 파악
2) 현행 시스템 기능 현황
- 정의
- 단위 업무 시스템이 현재 제공하고 있는 기능을 기술한 것
- 고려사항
- 단위 업무 시스템에서 제공하는 기능들을 주요 기능화 하부 기능으로 구분하여 계층형으로 표시
3) 인터페이스(Interface) 현황
- 정의
- 단위 업무 시스템이 다른 단위 업무 시스템과 주고받는 데이터의 종류, 데이터 형식, 프로토콜, 연계유형, 주기 등을 명시한 것
- 고려사항
- 데이터를 주고받는 형식이 무엇인지 파악(XML, 고정 포맷, 가변 포맷 등)
- 데이터를 주고받는 형식 프로토콜이 무엇인지 파악(TCP/IP, X25 등)
- 데이터들의 연계 유형은 무엇인지 파악(EAI, FEP 등)
4) 인터페이스 분류
- 하드웨어 인터페이스
- 하드웨어 간 통신을 위해서 존재하는 입출력 포트
- 전기적 연결 장치인 커넥터
- 신호의 송수신 프로토콜
- 소프트웨어 인터페이스
- 운영체제와 하드웨어들 사이
- 운영체제와 애플리케이션의 상호 작용
- 응용 내의 객체들이 상호 작용
- 사용자 인터페이스
- 컴퓨터와 인간 사이의 상호 작용
- 단위 업무 시스템과 주고받는 데이터 및 데이터 형식
03. 시스템 아키텍처 및 소프트웨어 파악
1) 현행 시스템 아키텍처 구성도
- 정의
- 현재 업무를 처리하기 위하여 최상위 수준에서 계층별로 어떠한 기술 요소들을 사용하고 있는지 표현한 것
- 고려사항
- 현재 운영되는 시스템별로 구분하되 서로 다른 경우에는 가장 핵심이 되는 업무 처리 시스템을 기준으로 함
2) 소프트웨어 구성도
- 정의
- 현재 업무 처리를 위해 설치되어 있는 소프트웨어의 제품명, 용도, 라이선스 적용 방식, 라이선스 수를 명시한 것
- 고려사항
- 시스템 구축 시 인프라 구축 비용
- 하드웨어 비용
- 주문형 소프트웨어 비용
- 상품형 소프트웨어 비용의 경우에는 라이선스 적용 방식의 기준을 파악
- 운영 중인 사이트, 서버, 프로세서, 코어(Core), 사용자 수 등을 파악
- 라이선스 수량을 파악
04. 하드웨어 및 네트워크 파악
1) 하드웨어 구성도
- 정의
- 하드웨어 구성도는 중앙 처리 장치의 처리 속도, 메모리의 크기, 보조 기억 장치 등 주요한 사양들의 수량을 명시
- 하드웨어 구성도는 최소의 비용으로 가용성을 높이는 이중화 기술이 적용되어 있는지를 명시
- 하드웨어 구성도는 현행 업무 시스템들이 어느 서버에서 운용되고 있는지 파악
- 고려사항
- 이중화 기술은 현행 업무 시스템의 서비스 기간에 의해 필요성이 결정
- 이중화 기술은 현행 업무 시스템에 문제가 발생하였을 경우, 대응 정책에 따라 필요함이 결정
- 현행 업무 시스템에 이중화 기술이 적용되었다면 목표 시스템에서도 이중화 기술이 필요한 경우가 대부분
- 이중화 기술은 목표 시스템의 인프라 구축 난이도에 따라 비용이 증가할 가능성이 존재
2) 네트워크 구성도
- 정의
- 현행 시스템들이 어떠한 네트워크 구성을 하고 있는지 그림이나 표 형태로 표현한 것
- 고려사항
- 서버의 위치를 파악
- 서버 간의 네트워크 연결 방식을 파악
- 서버들의 물리적인 위치 관계를 파악
- 조직 내 보안 취약성 분석 및 대응을 파악
- 네트워크 장애 발생 추적 및 대응을 파악
3) 저장 장치(Storage System, 스토리지 시스템)
1. DAS(Direct Attached Storage)
- 하드 디스크와 같은 데이터 저장 장치를 호스트 버스 어댑터에 직접 연결하는 벙식
- 저장 장치와 호스트 기기 사이에 네트워크 디바이스가 있지 말아야 하며 직접 연결하는 방식으로 구성
- 서버 장비에 직접 연결하여 운용하는 방식의 저장 장치로 구성이 용이
2. NAS(Network Attached Storage)
- 서버와 저장 장치를 네트워크로 연결하는 방식으로 구성 설정이 간편함
- 별도의 운영체제를 가진 서버 한 곳에서 파일을 관리하기 때문에 서버 간에 스토리지 및 파일 공유가 용이함
3. SAN(Storage Area Network)
- DAS의 빠른 처리와 NAS의 스토리지 공유 장점을 합친 방식
- 광케이블과 광채널 스위치를 통해 근거리 네트워크 환경을 구성하여 빠른 속도로 데이터 처리 가능
- 저장 장치 연결로 스토리지 공유가 가능
4. SDS(Sofrware Defined Storage)
- 기존의 저장 장치(스토리지) 시스템의 한계점(데이터의 폭증, 예측 불가능한 데이터 등)을 극복하기 위한 소프트웨어 시스템
- 저장 장치(스토리지)를 제어하는 하드웨어적인 컨트롤러 기능을 소프트웨어로 대체하여 많은 저장 장치를 포괄적으로 통제하여 유연하게 운영하는 시스템
- 하드웨어에서 저장 장치 소프트웨어를 분리하는 스토리지 구조
- 저장 장치 용량을 축소, 확장할 수 있으며, 필요에 따라 하드웨어를 업그레이드할 수 있음
- 전통적인 NAS 도는 SAN 시스템과 같은 하드웨어에 대한 소프트웨어의 종속성을 제거하여 모든 업계에서 표준적으로 동작하도록 설계
- 가상화를 적용하여 필요한 공간만큼 나눠 사용할 수 있도록 하며 서버 가상화와 유사함
- 컴퓨팅 소프트웨어로 규정하는 데이터 저장 장치 체계이며, 일정 조직 내 여러 저장 장치를 하나처럼 관리하고 운용하는 컴퓨터 이용 환경
- 저장 장치 자원을 효율적으로 나누어 쓰기 위한 방법으로 클라우드 시스템을 포괄하는 개념
- NAS는 파일을 체계화하고 공유하는 반면 SDS는 스토리지 볼륨 자체를 제어
05. 가상화 기계(VM : Virtual Machine)
1) 가상화 기계의 개념
- 서버 가상화는 하나의 물리적인 서버를 보다 효율적으로 사용하기 위한 기술
- 서버 가상화는 한 대의 서버를 많은 서버로 분할하여 이용하는 기술
- 서버 가상화로 만든 서버를 가상화 기계 혹은 가상 서버라고 함
- 가상화 소프트웨어를 사용하여 중앙 처리 장치, 메모리, 저장소 등을 논리적으로 분할하여 운영체제에 할당함으로써 서버의 분할을 구현하고 있음
2) 가상화 기계를 운영하는 방법
1. 하이퍼바이저(Hypervisor)형
- 하이퍼바이저는 컴퓨터 시스템에서 다수의 운영체제를 운영할 수 있게 하는 프로그램
- 하이퍼바이저는 컴퓨터 시스템의 하드웨어를 가상화하면서 하드웨어와 각각의 가상 시스템을 감시하며 중간 관리자 역할을 하는 것
- 하이퍼바이저형에서는 게스트 운영체제의 종류에 대한 제약도 없고, 하드웨어적인 제약도 없으며 모든 운영체제는 논리적으로 분리되어 있어서 임의의 VM 오류가 발생해도 다른 VM에게 영향을 주지 않음
- 컴퓨터 하드웨어 상에 운영체제를 설치하기 전에 하이퍼바이저를 설치한 후 그 위에 여러 개의 운영체제를 설치하여 운영하는 방식
- 여러 운영체제 중에 중심이 되는 운영체제를 호스트 운영체제라고 하며 나머지 운영체제는 게스트 운영체제 혹은 가상화 기계(VM)라고 함
- 여러 개의 VM들은 VM별로 독자적인 응용 프로그램을 설치 운영할 수 있음
2. 호스트(Host) 하이퍼바이저형
- 컴퓨터 하드웨어상에 운영체제를 설치하고 그 위에 하이퍼바이저를 설치
- 하이퍼바이저 위에 다시 여러 개의 가상화 기계를 설치하여 운영하는 방식
- 하이퍼바이저가 일반 응용 프로그램처럼 설치되어 운영됨
3. 컨테이너(Container)형
- 하이퍼바이저가 없고, 하나의 운영체제만이 존재하는 유형
- 컨테이너라는 프로그램이 여러 개의 가상화 기계가 있는 것처럼 논리적으로 운영
- 컨테이너에는 운영체제가 포함되지 않아 크기가 수십 MB에 불과하고, 운영체제 부팅이 필요 없으므로 서비스를 시작하는 시간이 짧음
- 크기가 작으므로 컨테이너 복제와 배포가 용이함
- 컨테이너를 실행할 때에는 물리 서버에서 응용 프로그램 하나를 실행하는 것과 마찬가지고 호스트 운영체제 위에 응용 프로그램의 실행 패키지인 이미지를 배포하기만 하면 됨
06. 전자 정부 프레임워크
1) 응용 프로그램 환경의 변화
1. 중앙 집중형 구조에서의 응용 프로그램
- 중앙 컴퓨터에 모든 프로그램(운영체제, 응용 프로그램)이 설치되어 있음
- 중앙 컴퓨터에 연결된 단말기를 통해 중앙 컴퓨터에 설치된 응용 프로그램이나 데이터 사용
2. 클라이언트/서버 환경에서의 응용 프로그램
- 하드웨어의 발전으로 단말기가 지능형 컴퓨터를 사용할 수 있게 됨
- 중요 프로그램은 중앙 컴퓨터에 설치하여 서비스함
- 각 지능형 컴퓨터는 자체적으로 응용 프로그램을 설치하여 사용할 수도 있고 중앙 컴퓨터에서 제공하는 서비스를 받을 수도 있음
- 경우에 따라서는 중앙 컴퓨터와 단말기가 업무를 공동으로 처리하는 분산 처리도 할 수 있었음
3. 인터넷 웹 환경에서의 응용 프로그램
- 인터넷이 발전하면서 웹 프로그램이 발전됨
- 각 단체의 업무 프로그램을 인터넷 환경에 맞게 웹 프로그램으로 개발
- 업무를 인트라넷, 회사 간의 협력을 엑스트라넷 형태로 사용
- 인트라넷(Intranet)
- 인터넷 기술을 이용하여 기업 내부의 업무를 해결하려는 네트워크 환경으로, 인터넷과 동일한 TCP/IP 프로토콜을 사용한 LAN 기반 통신망
- 엑스트라넷(Extranet)
- 인트라넷을 확장한 네트워크로 기업들 간에 외부 보안을 유지한 채 협력 업체들과 서로의 전산망을 이용하여 업무를 처리할 수 있도록 구성한 통신망
2) 프레임워크의 등장 배경
1. 하드웨어 중심 시대
- 컴퓨터 하드웨어가 급속도로 발전되면서 응용 프로그램의 필요성이 증대
- 기계 중심의 언어인 저급 언어로 응용 프로그램이 개발
- 다양한 애플리케이션이 요구되었고, 쉽게 응용 프로그램을 개발할 수 있는 환경이 요구됨
2. 프로그래밍 언어의 발전
- FORTRAN, COBOL, PASCAL, C, BASIC 등 다양한 프로그래밍 언어의 등장으로 많은 응용 프로그램을 개발할 수 있는 환경이 조성됨
- 응용 프로그램의 다양한 기능이 요구되면서 절차식으로 개발하던 프로그램 개발 기법이 한계(프로그램의 라인 수가 증가되고, 복잡도가 증가하고, 유지보수가 어려움)에 직면
- 절차식 프로그램의 한계를 극복하기 위한 구조적이고 모듈화된 기법으로 변화
- 구조적이고 모듈화된 프로그램 개발 기법은 프로그램을 기능별로 구분하여 독립적으로 개발하고 컴파일할 수 있도록 모듈화한 것
- 독립적으로 잘 만들어진 부품화된 프로그램을 함수, 모듈, 부프로그램, 서브 프로그램이라고 하며 재사용이 가능한 모듈로 만들어지거나 메이커 측에서 제공하게 되면 이를 라이브러리라고 함
- 컴포넌트는 라이브러리들이 종류별로 묶여있는 집단
- 통신 컴포넌트는 통신에 관련된 라이브러리들이 묶어놓은 집단이라 할 수 있음
- 라이브러리들이 모여 있는 컴포넌트는 적절하게 사용하는 방법만 알면 직접 프로그래밍하지 않고 사용할 수 있음
- 프로그래밍할 때 컴포넌트에 존재하는 특정 라이브러리를 호출하여 사용할 경우 컴포넌트 전부를 연결해야 하므로 불필요한 라이브러리를 포함해야 하는 경우가 발생하여 프로그램 실행 용량이 증가할 수 있음
3. 재사용 방식의 변화
- 코드의 재사용
- 절차식으로 개발된 프로그램의 특정 소스 코드를 복사해서 다시 사용
- 이미 개발된 프로그램 소스 일부를 복사하여 다른 프로그램에 이식
- 모듈화(Modularization)
- 전체 프로그램을 한 번에 설계하지 않고 단일 기능을 갖출 수 있도록 부분적으로 묶어서 처리하는 기술을 말하며 단위 프로그램, 함수, 서브 프로그램을 작성하기 위한 기법
- 소프트웨어의 내부 구조, 처리 절차, 테스트 계획에 대해 구체적으로 표현
- 모듈은 Subroutine, Function 형태로 사용
- 모듈의 수가 증가하면 상대적으로 모듈의 크기는 작아지고, 모듈 사이에 상호 교류가 증가하여 과부하(Overload) 현상이 나타남
- 모듈화는 시스템을 지능적으로 관리할 수 있도록 함
- 모듈화는 복잡도 문제를 해결하는 데 도움을 줌
- 모듈화는 유지보수와 수정을 용이하게 함
- 구조화(Structured)
- 모듈을 수행하기 위한 위치나 시기를 전체 구조에 적절하게 배치시키는 기법
- 프로그램 전체의 규모를 예측하고, 특정 처리 내용을 부프로그램에 할당하여 블록 단위로 프로그래밍을 할 수 있도록 하기 위한 개발 방법
- 구조도는 구조적 설계 단계의 기본 설계도로 사용되는 것으로 시스템의 기능을 몇 개의 고유한 기능으로 분할하여 블랙박스로 나타내고, 블랙박스 간의 인터페이스를 계층 구조로 표현
- 블랙박스
- 모듈의 내용을 볼 수 없다는 의미
- 부품처럼 작성된 모듈의 내용은 고려할 필요가 없이 어떤 기능을 갖고 있는가만을 고려한다는 것
- 설계 구조도는 시스템 혹은 프로그램의 외부 형태 구조를 설계하기 위한 도구 및 산출물
- 정보 은폐(Information Hiding)
- 모듈 내부의 정보들이 노출되고 모듈 간 정보를 공동으로 사용하게 되면 모듈 변경 시 정보를 공동으로 사용한 모든 모듈에 부작용을 주게 되므로 소프트웨어의 견고성이 유실됨
- 정보 은폐는 부작용을 최소화하는 기술이라고 할 수 있음
4. 객체(Object) 재사용
- 현실 세계 정보를 컴퓨터의 데이터로 추상화
- 데이터와 함수를 하나로 묶어 객체로 표현
- 객체는 클래스 도구를 이용하여 정의
- 한 번 정의된 클래스는 상속과 다형성을 통해 계속적으로 재사용할 수 있음
- 객체는 여러 개를 생성할 수 있으며, 객체 간 상호 작용을 통해 프로그래밍됨
- 객체의 재사용으로 대형 프로젝트를 개발할 때 용이함
- 재사용이 좋기 때문에 소프트웨어 생산성이 뛰어남
- 신속하게 개발할 수 있으며 유지보수가 용이함
- 객체 프로그래밍은 실세계 접근이 가능
- 객체를 설계하기가 어려울 뿐 한 번 만들어 놓으면 프로그래밍하기 쉬움
- 잘 정의된 객체들은 기능이나 종류별로 묶어 컴포넌트 형태로 제공
- 객체로 구성된 프로그램들은 대체로 실행 속도가 느림
5. 디자인 패턴(Design Pattern)
- 디자인 패턴은 유사한 문제를 해결하기 위해 설계를 분류하고 각 문제 유형별로 가장 적합한 설계를 일반화하여 체계적으로 정리해 놓은 것으로 소프트웨어 개발에서 효율성과 재사용성을 높일 수 있음
- 프로그램 개발 과정에서 자주 발생하는 문제를 해결하기 위한 방법 중 하나로, 소프트웨어 개발 과정에서 발견된 설계의 경험을 축적하여 이름을 붙여놓고 차후에 재사용하기 좋은 형태로 정리한 것
- 생산성을 향상시키기 위해 반복적으로 나타나는 문제 해법들을 전문가들의 경험을 모아서 정리한 일관된 솔류션이라고 할 수 있음
- 소프트웨어 개발자들이 유용하다고 생각되는 객체나 객체 간의 일반적인 상호 작용 방법들을 정의해서 모아 놓은 목록이라고 할 수 있음
- 소프트웨어 아키텍처나 프레임워크와 다르게 기능보다 구조, 가독성 및 확장성에 비중을 둠
- 디자인 패턴의 장, 단점
- 장점
- 개발자 간의 원활한 의사소통 가능
- 소프트웨어 구조 파악 용이
- 재사용을 통해 개발 시간 단축
- 설계 변경 요청에 대한 유연한 대처 가능
- 단점
- 객체지향 설계, 구현 위주로만 사용
- 초기 투자 비용이 부담이 증가할 수 있음
3) 전자 정부 프레임워크
1. 전자 정부 프레임워크의 기본 개념
- 전자 정부 공통 컴포넌트는 효율적인 전자 정부 기반 시스템의 구축 및 운영을 지원
- 전자 정부의 서비스 품질 및 정보화 투자 효율 향상의 기반을 확보
- 전자 정부 서비스에 대한 접근성을 제고하기 위해 표준 프레임워크 기반으로 개발된 공통 컴포넌트를 제공
2. 전자 정부 프레임워크의 계층
- 공통 기반 계층(Foundation Layer) : 실행 환경 서비스 간에 공통적으로 사용되는 기능을 제공
- 화면 처리 계층(Presentation Layer/UX Layer) : 업무 처리 서비스와 사용자 간의 인터페이스를 담당하는 서비스로 사용자 화면 구성 및 사용자 입력 정보 검증 등의 기능을 지원
- 업무 처리 계층(Business Layer) : 업무 프로그램의 업무 로직을 담당하는 서비스로 업무 흐름 제어, 트랜잭션 관리, 에러 처리 등의 기능을 제공
- 데이터 처리 계층(Data Access Layer) : 업무 프로그램에서 사용할 수 있도록 데이터에 대한 CRUD 기능을 지원
- 연계 통합 계층(Integration Layer) : 타 시스템과의 연동 기능을 지원
3. 전자 정부 프레임워크의 장점
- 공통 컴포넌트의 재사용으로 중복 예산 절감
- 표준화된 개발 기반으로 사업자 종속성 해소
- 무상 제공으로 비용 경쟁력 향상
- 표준화된 연계 모듈 활용으로 상호 운용성 향상
- 개발 표준에 의한 모듈화로 유지보수 용이