상세 컨텐츠

본문 제목

정보처리기사 실기 5장 서버 프로그램 구현 요점 정리

정보처리기사 실기

by E_ONION 2020. 6. 27. 16:57

본문

1. 개발 환경 구축

● 응용 SW 개발을 위해 개발 프로젝트를 이해하고 SW 및 HW 장비를 구축하는 것

- 응용 SW가 운영될 환경과 유사한 구조로 구축

- 개발 프로젝트 분석 단계의 산출물 바탕으로 개발에 필요한 HW, SW를 선정

- HW, SW 성능, 편의성, 라이선스 등 비즈니스 환경에 적합한 제품들을 최종적으로 선정

● HW 환경 : 사용자와 인터페이스 역할을 하는 클라이언트, 클라이언트와 통신하는 서버로 구성

- 클라이언트 : PC, 스마트폰

- 서버 : 사용 목적에 따라서버(Client로부터 직접 요청받아 처리하는 서버, 저용량 정적 파일 제공),

웹 애플리케이션 서버(사용자에게 동적 서비스를 제공하기 위해 웹 서버로부터 요청받아 가공 작업 수행, 서버 간 인터페이스 역할), DB 서버, 파일 서버(서비스 제공 목적으로 유지하는 파일들 저장하는 서버)

웹 서버의 기능

● SW 환경 : 클라이언트와 서버 운영을 위한 시스템 SW와 개발에 사용되는 개발 SW로 구성

- 시스템 SW : OS, 웹 서버 및 WAS 운용 서버 프로그램, DBMS

- 개발 SW : 도구

● 개발 언어의 선정 기준 : 적정성, 효율성, 친밀성(이해  활용도), 이식성(다양 시스템 적용), 범용성

 

2. 모듈 ≒ 모듈화를 통해 분리된 시스템의 각 기능들로, 서브루틴, 서브시스템, 작업 단위, SW 내의 프로그램 등과 같은 의미로 쓰임

- 단독 컴파일 · 재사용 가능, 하나의 기능만을 수행하고 과도한 상호작용 배제함으로써 독립적임

    ┌ 의존도, 상호작용

- 결합도 약하게, 응집도 강하게, 모듈 크기는 작게 해야 독립성이 높아짐 => 품질 상승

                       └ 관련 정도, 기능적 연관, 독립적인 기능으로 정의되어 있는 정도

 결합도 : 모듈 간에 상호 의존하는 정도 또는 두 모듈 사이의 연관 관계를 의미

 응집도 : 정보 은닉 개념을 확장한 것, 명령어나 호출문 등 모듈의 내부 요소들의 서로 관련되어 있는 정도, 즉 모듈이 독립적인 기능으로 정의되어 있는 정도를 의미

3. 공통 모듈

개요 : 여러 프로그램에서 공통적으로 사용할 수 있는 모듈을 의미

- 명세 기법 : 정확성, 명확성, 완전성, 일관성, 추적성, 단순성

- 재사용 : 사용법 공개, 외부 모듈과 결합도 낮고 · 응집도 높음

- 재사용 규모에 따른 분류

┌ 함수와 객체 : 클래스나 메소드 단위의 소스코드 재사용

┢ 컴포넌트 : 컴포넌트 자체 수정 없이 인터페이스 통해 통신으로 재사용

└ 애플리케이션 : 공유하는 방식 재사용

 

4. DBMS 접속 기술

● 개요

- 사용자가 데이터를 사용하기 위해 응용 시스템을 이용하여 DBMS에 접근하는 것

- 응용 시스템은 사용자로부터 매개 변수 전달받아 SQL을 실행하고 DBMS로부터 전달받은 결과를 사용자에게 전달

- 웹 응용 프로그램은 웹 응용 시스템을 통해 DBMS에 접근, 웹 응용 시스템은 웹 서버와 WAS로 구성(규모 작을 시 통합)

- 사용자(웹 응용 프로그램) ↔ 웹 서버 ↔ WAS ↔ DBMS

● DBMS 접속 기술

- DBMS에 접근하기 위해 사용하는 API, API 사용을 편리하게 도와주는 프레임워크 등을 의미

- JDBC : JAVA 언어로 다양한 종류의 DB에 접속하고 SQL문을 수행할 때 사용되는 표준 API, 1997.02 썬 마이크로시스템에서 출시, 접속하려는 DBMS에 대한 드라이버 필요

- ODBC : DB에 접근하기 위한 표준 개방형 API, 개발 언어와 상관없음, 마이크로소프트에서 출시, 다양한 DBMS 접근 가능, DBMS 종류 몰라도 됨

- My Batis : JDBC 코드 단순화하여 사용할 수 있는 SQL Mapping 기반 오픈소스 접속 프레임워크, SQL 거의 그대로 사용하여 국내 환경에 적합, SQL 문장 분리하여 XML 파일을 만들고 Mapping을 통해 SQL 실행

● 동적 SQL (Dynamic SQL) : 사용자가 응용 프로그램 실행시킨 후 입력란에 SQL을 직접 입력하여 결과를 확인 가능한 것, 다양한 조건에 따라 SQL 구문을 동적으로 변경하여 처리할 수 있는 SQL 처리 방식

- 개발 언어에 삽입되는 SQL 코드를 문자열 변수에 넣어 처리하는 것, 조건에 따라 SQL 구문 동적으로 변경하여 처리 가능

- NVL 함수 사용 필요 없음, 응용 프로그램 수행 시 SQL이 변형될 수 있어 프리컴파일할  구문 분석, 접근 권한 확인 불가능

- 동적 SQL은 정적 SQL에 비해 속도는 느리지만, 상황에 따라 다양한 조건 첨가하는 등 유연한 개발 가능

정적 SQL vs 동적 SQL

5. 서버 개발

● 개요 : 웹 애플리케이션의 로직을 구현할 서버 프로그램을 제작하여 WAS에 탑재하는 것

- WAS에 구현된 서버 프로그램은 웹 서버로부터 받은 요청을 처리하여 결과를 반환하는 역할 수행

● 서버 개발 프레임워크 : 손쉽게 처리할 수 있도록 클래스나 인터페이스를 제공하는 SW

- 제한적(언어에 종속적), MVC 패턴 기반

- Spring(JAVA), Node.js(JavaScript), Django(Python), Codeigniter(PHP), Ruby on Rails(Ruby)

● 서버 프로그램 구현 : 모듈들을 통합하는 방식으로 구현

- 특정 모듈 다른 모듈에 영향 미치지 않아 

- 결합도 하게 응집도 하게

- 공통 모듈 : 재사용 가능 모듈, 자주 사용되는 계산식, 사용자 인증

● 프레임워크 특성 : 모듈화, 재사용성, 확장성(다형성), 제어의 역 흐름

6. 서버 개발 과정

서버 개발 : DTO/VO, SQL, DAO, Service, Controller를 각각 구현하는 과정을 통해 이루어 짐

- 구현 순서 개발자가 임의로 변경 가능

- 개발하려는 서버 프로그램의 목적, 개발 언어, 규모 등의 이유로 통합되거나 세분화 가능

- 모든 과정에서 보안 약점이 발생하지 않도록 SW 개발 보안 가이드 참고

DTO(Data Transfer Object) / VO(Value Object) 구현

: 데이터 교환을 위해 사용할 객체를 만드는 과정

- 변수 및 객체를 송수신할 데이터의 자료형에 알맞게 생성

- 알고리즘 등의 로직은 구현하지 않고, 변수와 데이터를 저장하고 변환하는 메소드만 구현

● SQL 구현

: 데이터의 삽입, 변경, 삭제 등의 작업을 수행할 SQL문을 생성하는 과정

- SQL문은 소스 코드 내에 직접 입력하거나, 별도의 XML 파일로 저장하여 관리

- XML 파일로 SQL문을 관리하여 경우 중복되는 SQL문을 최소화할 수 있고, 유지보수가 간편

● DAO(Data Access Object) 구현

: DB에 접근하고, SQL을 활용하여 데이터를 실제로 조직하는 코드를 구현하는 과정

Service 구현

: 사용자의 요청에 응답하기 위한 로직을 구현하는 과정

● Controller 구현

: 사용자의 요청에 적절한 서비스를 호출하여, 그 결과를 사용자에게 반한하는 코드를 구현하는 과정

 

7. 배치 프로그램

● 개요 : 사용자의 상호 작용 없이 여러 작업들을 미리 정해진 일련의 순서에 따라 일괄적으로 처리

- 정기 배치 : 일, 주, 월과 같이 정해진 기간에 정기적으로 수행

- 이벤트성 배치 : 특정 조건 설정해두고 조건 충족될 때만 수행

- On-Demand 배치 : 사용자 요청  수행

- 필수 요소 : 대용량 데이터, 자동화(개입 X), 견고성(중단 X), 안정성/신뢰성(추적 가능), 성능(방해 X, 지정 시간 수행 완료)

● 배치 스케줄러(Batch Scheduler)

: 일괄 처리(Batch Processing) 작업이 설정된 주기에 맞춰 자동으로 수행하게 지원해주는 도구, 잡 스케줄러라고도 함

- 스프링 배치

: Spring Source 사와 Accenture 사가 2007년 공동 개발한 오픈 소스 프레임워크 

  * 스프링 프레임워크 특성을 그대로 가져와 스프링 기능 사용 가능

  * 데이터 교환하는데 필요한 컴포넌트 제공,

  * (로그 관리, 추적, 트랜잭션 관리, 작업 처리 통계, 작업 재시작) 기능 제공

  * Job, Job Launcher, Step, Jop Repository

- Quartz

: 스프링 프레임워크로 개발되는 응용프로그램들의 일괄 처리를 위한 다양한 기능을 제공하는 오픈 소스 라이브러리

  * 수행할 작업과 수행 시간을 관리하는 요소들을 분리하여 일괄 처리 작업에 유연성 제공

  * Scheduler, Job, Job Detail, Trigger

- Cron

: Cron은 리눅스의 스케줄러 도구로 crontab 명령어를 통해 작업을 예약할 수 있다

  * 편집기(Editor)에서 요일, 월, 일, 시 분을 기준으로 수행할 명령어 지정

  * 옵션 : -e(편집기 호출하여 작업 추가 및 수정), -l(작업 목록 출력), -r(작업 삭제)

관련글 더보기

댓글 영역