솜은 코튼

[정보처리기사] 5장 서버 프로그램 구현 본문

자격증/정보처리기사

[정보처리기사] 5장 서버 프로그램 구현

솜.코 2020. 7. 14. 16:10
01. 개발 환경 구축 - 하드웨어 환경

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

     서버 : 웹 서버, 웹 애플리케이션, DB Server, File Server

 

     # 웹 서버 : 직접 요청을 받아 처리, 저용량 정적 파일 제공

     (HTTP/HTTPS 지원, 통신 기록, 정적 파일 관리, 대역폭 제한, 가상 호스팅, 인증)

     # 웹 애플리케이션 서버 : 웹 서버와 데이터베이스 서버 사이에서 인터페이스 역할 수행

     # 데이터베이스 서버 : 데이터베이스와 DBMS 운영

     # 파일 서버 : 데이터베이스에 저장하기 비효율적인 파일들 저장

 

02. 개발 환경 구축 - 소프트웨어 환경

     시스템 소프트웨어 : OS/DBMS

     개발 소프트웨어 :

      # 요구사항 관리 도구 : 요구사항의 수집과 분석, 추적 등을 도와줌

      # 설계/모델링 도구 : UML 지원, 개발의 전 과정에서 설꼐 및 모델링을 도와줌

      # 구현 도구 : 애플리케이션의 실제 구현을 지원

      # 빌드 도구 : 빌드 및 배포, 라이브러리 관리 지원

      # 테스트 도구 : 요구사항에 적합하게 구현되었는지 테스트

      # 형상 관리 도구 : 산출물 버전별로 관리

 

03. 모듈

     : 단독 컴파일 가능, 재사용 가능, 기능이 서로 독립됨

 

     # 결합도 : 낮을수록 품질이 높음

     결합도↓                                                                                  결합도↑

     자료 결합도    스탬프    제어 결합도    외부 결합도    공통 결합도    내용 결합도

     # 응집도 : 정보 은닉 개념 확장, 높을수록 품질 높음

     응집도                                                                                                                    응집도↓

     기능적 응집도  순차적 응집도  교환적 응집도  절차적 응집도  시간적 응집도  논리적 응집도  우연적 응집도

     # 팬 인 / 팬 아웃

          A       B

            ↘  ↙ 

               C

        : 팬 인) A, B는 0 / C는 2  팬 아웃) A, B는 1 / C는 0

 

04. 공통 모듈

     : 모듈의 재사용성 확보와 중복 개발 회피를 위함

 

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

     재사용 : 외부 모듈과 결합도↓, 응집도

     재사용 규모에 따른 분류 : 함수와 객체, 컴포넌트, 애플리케이션

 

05. DBMS 접속(Connection)

     웹 응용 시스템의 구조

     웹 응용 프로그램 <-> 웹 서버 <-> WAS <-> DBMS

                                ----웹 응용 시스템----

     DBMS 접속 기술

     # JDBC : Java언어로 DB접속하고 SQL문 수행할 때 사용되는 표준 API

     # ODBC : DB 접근하기 위한 표준 개방형 API

     # MyBatis : JDBC코드 단순화 사용 SQL Mapping 기반 오픈 소스 접속 프레임워크

     동적 SQL vs 정적 SQL

 

동적 SQL

정적 SQL

SQL 구성

문자열 변수에 담아 동적 처리

커서를 통한 정적 처리

개발 패턴

반복문 활용

NVL 함수 없이 로직통해 작성

실행 속도

빠름

느림

사전 검사

가능

불가능

 

 

06. 서버 개발

     : WAS에 탑재하는 것. 언어는 Java, JavaScript, Python, PHP, Ruby 등

     

     서버 개발 프레임워크 : 대부분 MVC 패턴 기반

     # spring : java 기반, 전자정부 표준 프레임워크 기반 기술

     # Node.js : JavaScript 기반, 비동기 입출력 처리, 애플리케이션에 적합

     # Django : Python 기반, 컴포넌트 재사용과 플러그인화 강조, 신속한 개발 가능

     # Codeigniter : PHP 기반, 인터페이스 간편, 서버 자원 적게 사용

     # Ruby on Rails : Ruby 기반, 데이터베이스 작업을 단순화, 자동화시켜 신속한 개발 가능

 

     프레임워크의 특징

     # 모듈화 : 캡슐화를 통해 변경에 따른 영향 최소화, 품질 향상

     # 재사용성 : 개발자의 생산성 향상

     # 확장성 : 다형성을 통한 인터페이스 확장 가능, 애플리케이션 개발 간으

     # 제어의 역흐름 : 객체들의 제어 권한을 프레임워크에 넘김으로 생산성 향상

 

07. 서버 개발 과정

     DTO/VO 구현 : 데이터 교환을 위해 사용할 객체 생성 (get/set)

     SQL 구현 : IUDS 등 작업 수행 SQL문 생성 (mapper)

     DAO 구현 : DB 접근, 데이터 실제 조작 (selectList)

     Service 구현 : 사용자 요청 응답 로직 구현 (@Resource(name="memDao")

     Controller 구현 : 사용자 요청에 적절한 서비스 호출 후 결과 반환 (@RequestMapping(value="/test/employees",~)

 

08. 배치 프로그램

     : 상호작용 없이 미리 정해진 일련의 순서에 따라 일괄적 처리

     - 주기에 따라 정기 배치(정해진 기간), 이벤트성 배치(특정 조건), On-Demand 배치(사용자 요청 시)

     - 필수 요소 : 대용량 데이터, 자동화, 견고성, 안정성/신뢰성, 성능

 

     배치 스케줄러

     # 스프링 배치 : Job / Job Lancher / Step / Job Repository

     # Quartz : Scheduler / Job / Job Detail / Trigger

     # Cron : 리눅스의 스케줄러 도구

        [분]      [시]      [일]      [월]      [요일]      [명령어]

       0~59    0~23    1~31    1~12  0(일)~6(토)

       (*: 매시기마다, /3: 3시간마다, 18-21: 18시~21시 사이, 4,9,11 4/9/11월)