• [정보처리기사] 4강 _ 서버 프로그램 구현

    2021. 3. 20.

    by. KimBangg

     

    1. 개발 환경 구축

    1-1 ) 개발 환경 구축

    1. 하드웨어

    -종류

    웹서버(Web Server) : 클라이언트로 직접 요청을 받아 처리하는 서버로, 저용량의 정적파일 제공

    - Apache Server,

    웹 어플리케이션 서버(WAS) : 사용자에게 동적 서비르르 제공하기 위해 웹 서버로부터 요청을 받아 데이터 작업을 수행하거나, 웹 서버와 데이터 베이스 서버 또는 파일 서버 사이에서 인터페이스 역할을 한다.

    - Tomcat, Oracle Web Server

    데이터 베이스 서버 : DB와 DBMS

    파일 서버 : 데이터 베이스에 저장하기 비 효율적이거나 서비스 제공을 목적으로 유지하는 파일들을 저장하는 서버

    -AWS EC2, S3 etc.

    2. 소프트웨어

    -종류

    요구 사항 관리 도구 : 요구 사항의 수집과 분석, 추적 등을 도와주는 소프트웨어

    - jira, inteGREAT etc.

    설계/모델링 도구 : uml을 지원하며, 개발의 전 과정에서 설계 및 모델링을 도와주는 소프트웨어

    - DB Desinger, ArogoUML etc.

    구현 도구 : 개발 언어를 통해 어플리케이션의 실제 구현을 지원 하는 소프트웨어

    -Eclipse, intelliJ, VsCode

    빌드 도구 : 구현 도구를 통해 작성된 소스의 빌드 및 배포, 라이브러리를 관리해주는 소프트웨어

    - Ant, Gradle, Maven etc.

    테스트 도구 : 모듈들이 요구사항에 적합하게 구현 되엇는지 테스트하는 소프트웨어

    - Junit, Spring Test etc.

    2. 모듈

    모듈화를 통해 시스템을 각 기능별로 분리 해놓은 것을 의미.

    -특징

    단독으로 컴파일 가능하며, 재사용이 가능하다.

    독립성은 결합도와 응집도에 의해 평가되며, 결합도는 낮을 수록 응집도는 높을 수록 좋다.

     

    결합도 [ 높을수록 안 좋음]

    모듈 간에 상호 의존하는 정도를 의미한다.

    => 모듈을 하나의 회사로 생각하면, 회사가 운영되기 위해서 다른 회사의 지원과 연계성이 높은지 여부가 결합도.

    즉, 결합도가 높다는 것은 A 모듈이 B모듈과 연관성이 높다는 의미이며 다른 모듈에 의해 좌지우지 될 수 있다는 것을 의미한다.

     

    - 종류 [ 결합도의 정도는 내림차순 ]

    내용 : 한 모듈이 다른 모듈의 내부 기능 및 자료를 직접 참조나 수정

    공통 : 공유되는 데이터 영역을 여러 모듈이 사용하는 경우

    외부 : 데이터를 외부의다른 모듈에서 참조 하는 경우

    제어 : 어떤 모듈이 다른 모듈 내부의 흐름을 제어하기 위해 제어 신호를 사용하는 경우

    스탬프 : 모듈 간의 인터페이스로 배열이나 레코드 등의 자료구조가 전달 되는 경우

    자료 : 모듈 간의 인터페이스가 자료 요소로만 구성 되는 경우

     

    응집도 [ 높을수록 좋음 ]

    모듈의 내부 요소들이 서로 관련 되어 있는 정도로,모듈이 독립적인 기능으로 정의되어 있는 정도를 의미.

    => 모듈을 하나의 회사로 생각하면, 회사 내부의 단합이 잘 된다 라는 것을 응집도가 높다고 생각하면 좋다.

     

    - 종류 [ 결합도의 정도는 오름순 ]

    우연적 : 모듈 내부의 각 구성 요소들이 서로 관련 없는 요소로만 구성된 경우

    논리적 : 유사한 성격을 갖거나 특정 형태로 분류되는 처리 요소들로 하나의 모듈이 형성되는 경우

    시간적 : 특정 시간에 처리 되는 몇개의 기능을 모아 하나의 모듈로 작성한 경우

    절차적 : 다수의 관련 기능을 가질 때 모듈 안의 구성 요소들이 그 기능을 순차적으로 수행하는 경우

    교환적(=통신) : 동일한 입력과 출력을 사용하여 다른 기능을 수행하는 구성 요소들이 모인 경우

    순차적 : 모듈 내 하나의 활동으로부터 나온 출력 데이터를 그 다음 활동의 입력으로 사용하는 경우

    기능적 : 모듈 내부의 모든 기능 요소들이 단일 문제와 연관되어 수행 하는 경우

     

    - 팬인 & 팬아웃

    1.어떤 모듈을 제어하는 모듈의 수

    2.어떤 모듈에 의해 제어 받는 모듈의 수

    3. 팬 인이 높으면 모듈의 관리가 잘 되있는거지만, 팬아웃이 높으면 불 필요한 모듈의 호출이 있을 확률 높다.

     

    3. 공통 모듈

    여러 프로그램에서 공통적으로 사용 할 수 있는 모듈

     

    - 준수 해야 할 명세 기법

    정확성 : 시스템 구현 시 해당 기능이 필요 하다는 것을 알 수 있도록 작성해야한다.

    명확성 : 해당 기능을 이해 할 때, 중의적 해석이 되지 않도록 작성한다.

    완전성 : 시스템 구현을 위해 필요한 모든 것을 기술한다.

    일관성 : 공통 기능들이 서로 충돌 하지 않도록 작성한다.

    추적성 : 기능에 대한 요구 사항의 출처 , 관련 시스템 등의 관계가 파악이 가능하도록 작성한다.

     

    4. DBMS 접속

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

    응용 시스템[웹 서버 & WAS] 은 사용자로 부터 매개변수를 입력 받아 SQL을 실행하고 DBMS로 부터 받은 결과 값을 사용자에게 전달해주는 역할을 한다.

     

    - DBMS 접속 기술

    JDBC : Java 언어로 다양한 종류의 데이터베이스에 접속하고 SQL을 수행 할 때 사용되는 API

    ODBC : 언어와 상관 없이 데이터 베이스에 접근이 가능한 표준 개방형 API

    MyBatis : JDBC 코드를 단순화하여 사용 할 수 있는 SQL Mapping 기반 오픈 소스 접속 프레임워크

     

    - 동적 SQL

    다양한 조건에 따라 SQL 구문을 동적으로 변경하여 처리 할 수 있는 SQL 처리 방식이다.

     

    5. 서버 개발

    웹 어플리케이션의 로직을 구현 할 서버 프로그램을 제작하여 탑재 하는 것을 의미한다.

     

    6 서버 개발 과정

    서버 개발은 DTO/VO, DAO, Service, Controller를 각각 구현하는 과정을 통해 이루어진다.

     

    1) DTO/VO

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

    실제 데이터베이스와 같은 자료형인 데이터를 생성하고, GETTER & SETTER를 통해 저장 및 반환하는 역할 제공.

     

    2) SQL 구현

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

     

    3) DAO 구현

    데이터베이스에 접근하고, SQL을 활용하여 데이터를 실제로 조작하는 코드

     

    4) Service 구현

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

     

    6. Controler

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

     

    7. 배치 프로그램

    사용자의 상호 작용없이 여러 작업들을 미리 정해진 일련의 순서에 따라 일괄적으로 처리하는 것을 의미.

     

    - 종류

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

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

    On-Demand 배치 : 사용자 요청시 수행한다.

    - 필수 요소

    대용량 데이터, 자동화, 견고성, 안정성, 성능

     

    8. 인터페이스 구현

    인터페이스 설계서?

    다른 기종 시스템 및 컴포넌트 간 데이터 교환 및 처리를 위해 각 시스템의 교환되는 데이터, 임무, 송수신 주체등이 정의된 문서이다.

     

    외부&내부 모듈 연계를 위한 인터페이스 기능식별

     

    -EAI

    기업에서 운영되는 서로 다른 플랫폼 및 어플 간의 정보를 전달, 연계, 통합이 가능하도록 해주는 솔루션

    -종류

    포인트투포인트 : 가장 기초적인 통합방식(1:1)이고, 솔루션 구매없이도 커뮤니케이션 및 통합 가능

    Hub&Spoke : 단일한 접점의 허브 시스템을 통하여 데이터를 전송하는 중앙 집중식 방식

    Message Bus : 어플 사이에 미들웨어를 두어 연계하는 통합방식, 확장성과 대용량 데이터 처리 가능

    하이브리드 : 메시지 버스 + 허브 앤 스포크

     

    -ESB

    기업에서 운영되는 서로 다른 플랫폼 및 어플 간을 하나의 시스템으로 운영, 관리 할 수 있도록 서비스 중심의 통합을 지향하는 아키텍처

     

     

    8. 인터페이스 기능 구현

    개발하고자 하는 응용 소프트웨어와 연계 대상 모듈 간의 세부 설계서를 확인하여 일관되고, 정형화된 인터페이스 기능을 구현

    -컴포넌트 명세서

    컴포넌트의 개요, 내부 클래스이 동작, 인터페이스를 통해 외부와 통신하는 명세를 정의

    -인터페이스 명세서

    컴포넌트 명세서에 기재된 인터페이스 클래스의 세부적인 조건 및 기능을 명시

     

    1. 사전에 정의된 기능에 대한 구체적 분석

    상세하게 정의된 기능 구현 정의 내용을 토대로 어떻게 구현할 것인지 분석.

     

     

    2. 인터페이스 구현

    데이터 통신을 사용하는 방법과 인터페이스 객체를 사용하여 구현하는 방법이 있다.

     

    3. 인터페이스 예외 처리 방안

    - 데이터 통신을 사용한 인터페이스 예외 처리 방법

    송신 측에서 예외처리 : AJAX 호출 후 반환 값을 받아 어떻게 처리할지를 호출하는 부분에서 사전 정의

    수신 측에서 예외처리 : 수신 측에서 받은 JSON 객체를 처리 시 , Try catch 문을 이용하여 예외처리 -> 전달

    - 인터페이스 객체를 사용한 인터페이스 예외 처리 방법

    송신 인터페이스 테이블에서 예외처리 : 예외 발생 시 송신 인터페이스 테이블에 예외 유형에 따른 코드와 상세한 원인을 입력

    수신 인터페이스 테이블에서 예외처리: 수신 측에서 데이터가 없거나 잘못된 값을 읽을 경우 예외발생

    예외 발생 시, 사전에 정의된 예외 코드를 입력하여, 발생 사유를 함께 입력.

     

    4) 인터페이스 보안 기능 적용

    - 데이터 통신 시 데이터 탈취 위협

    스니핑을 통해 데이터 전송 내역을 감청하여, 데이터를 탈취하는 위협이 존재

     

    - 데이터 통신 시 데이터 위,변조 위협

    전송 데이터에 대한 사입, 삭제, 변조 공격을 통한 시스템 위협이 존재한다.

     

    - 시큐어 코딩 가이드

    입력 데이터 검증 및 표현 : 프로그램 입력값에 대한 검증 누락 및 부적절한 검증

    보안 기능 : 보안기능의 부적절한 구현

    시간 및 상태 : 동시에 수행 지원하는 병렬 시스템, 하나 이상의 프로세스가 동작하는 환경에서 시간 및 상태 세팅을 부적절하게 처리

    에러 처리 : 에러 미처리 또는 불충한 처리로 에러 메시지가 중요 정보를 노출

    코드 오류 : 개발자가 범할 수 있는 코드 오류로 인해 유발

    캡슐화 : 기능성이 불충분한 캡슐화로 인가되지 않은 사용자에게 데이터 유출

    API 오용 : 의도된 사용에 반하는 방법으로 API를 사용하거나, 보안에 취약한 API 사용

     

    - 데이터 베이스 보안가이드

    -데이터베이스 암호 알고리즘

    대칭 키, 비 대칭 키, 해시 암호화

    -데이터베이스 암호화 기법

    API 방식 : 암호 모듈을 적용하는 어플리케이션 수정 방식

    Plun-In 방식 : DB 레벨의 확장성 프로시저 기능을 이용

    하이브리드 방식

    * SSL / TLS : 응용과 TCP 계층 사이에서 웹 데이터 암호화 및 전송 시 기밀성을 보장하는 공개키 기반 보안 프로토콜

     

    - 어플 및 데이터베이스 보안 기능 적용

    비인가자 접근 권환, 악의적 코드 삽입금지, 악의적 시도 시 에러처리.

     

     

    9. 인터페이스 기능 구현 검증

    - 구현 검증 도구 종류

    xUnit : 자바, C++ 등 다양한 언어를 지원하는 단위 테스트 프레임워크

    staf : 서비스 호출, 컴포넌트 재상요 등 다양한 환경을 지원하는 테스트 프레임워크

    FitNesse : 웹 기반 테스트 케이스 설계, 실행, 결과 확인등을 지원하는 테스트 프레임 워크

    Selenium : 다야한 브라우저 지원 및 개발언어를 지원하는 웹 어플리케이션 테스트 프레임워크

    watir : 루비 기반 웹 어플리케이션 프레임워크

    - 인터페이스 감시 도구

    어플 모니터링 툴 APM을 사용하여 동작 상태 감시 가능

    데이터 베이스, 웹 어플 트랙잭션, 로그 및 시스템 부하 등 종합적인 정보를 조회하고, 커넥션 풀등 자원 관리

    스카우터는 어플에 대한 모니티렁 및 DB Agent를 통해 오픈 소스 DB 관리 및 인터페이스 감시 기능

     

    감시 도구 SCOUT

    어플리케이션에 대한 모니터링 및 DB Agent를 통해 오픈소스 DB 모니터링

     

    댓글