정보처리기사

[정처기 실기] 5장 - 서버 프로그램 구현

jooona 2021. 4. 14. 12:32
반응형

개발 환경 구축

개발 환경 구축: 응용 소프트웨어 개발을 위해 개발 프로젝트를 이해하고 소프트웨어 및 하드웨어 장비를 구축하는 것.

 

하드웨어 환경: 클라이언트, 서버로 구성

  • 클라이언트: PC, 스마트폰
  • 서버
    • 웹 서버(Web Server): 클라이언트로 부터 직접 요청을 받아 처리. 저용량의 정적 파일들을 제공
    • 웹 어플리케이션 서버(WAS): 사용자에게 동적 서비스를 제공하기 위해 웹 서버로 부터 요청을 받아 작업을 수행. 웹 서버와 데이터베이스 서버 또는 파일 서버 사이에서 인터페이스 역할 수행
    • 데이터베이스 서버(DB Server): 데이터베이스와 DBMS를 관리
    • 파일 서버(File Server): 파일들을 저장

웹 서버의 기능

  • HTTP/HTTPS 지원: 브라우저로부터 요청을 받아 응답
  • 통신 기록: 처리한 요청들을 로그 파일로 기록
  • 정적 파일 관리: HTML, CSS 등의 정적 파일들을 저장하고 관리
  • 대역폭 제한: 네트워크 트래픽의 포화를 방지하기 위해 응답 속도를 제한
  • 가상 호스팅: 하나의 서버로 여러 개의 도메인 이름을 연결
  • 인증: 합법적인 사용자인지를 확인

소프트웨어 환경: 시스템 소프트웨어와 개발 소프트웨어로 구성

  • 시스템 소프트웨어: 클라이언트와 서버 운영. 운영체제, DBMS...
  • 개발 소프트웨어: 요구사항 관리 도구, 설계-모델링 도구, 구현 도구, 빌드 도구, 테스트 도구, 형상 관리 도구...

<개발 언어의 선정 기준>

적정성(개발하려는 소프트웨어의 목적에 적합해야)

효율성(코드의 작성 및 구현이 효율적이여야)

이식성(다양한 시스템 및 환경에 적용이 가능해야)

친밀성(개발 언어에 대한 개발자들의 이해도와 활용도가 높아야)

범용성(다른 개발 사례가 존재하고 여러 분야에서 활용되고 있어야)

 

모듈

모듈: 모듈화를 통해 분리된 시스템의 각 기능. 단독으로 컴파일 가능.

 

jooona.tistory.com/111?category=845669

 

[소프트웨어 설계] 모듈의 결합도와 응집도

1. 모듈 (Module) 모듈이란 모듈화를 통해 분리된 시스템의 각 기능을 뜻합니다. 모듈화는 시스템을 모듈 단위로 나누는 것을 뜻하며, 이를 통해 시스템의 수정 및 재사용, 그리고 유지, 관리가 용

jooona.tistory.com

팬인: 어떤 모듈을 제어(호출)하는 모듈의 수

팬아웃: 어떤 모듈에 의해 제어(호출)하는 모듈의 수

 

공통 모듈

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

 

공통 모듈 구현 시 명세 기법

  • 정확성: 시스템 구현 시 해당 기능이 필요하다는 것을 정확히 작성 
  • 명확성: 해당 기능을 이해할 때 중의적으로 해석되지 않도록 명확하게 작성
  • 완전성: 시스템 구현을 위해 필요한 모든 것을 기술
  • 일관성: 공통 기능 간 상호 충돌이 발생하지 않도록 작성
  • 추적성: 기능에 대한 요구사항의 출처, 관련 시스템 등의 관계를 파악할 수 있도록 작성

재사용: 비용과 개발 시간을 절약하기 위해 이미 개발된 기능들을 파악하고 재구성하여 새로운 시스템 또는 기능 개발에 사용하기 적합하도록 최적화

 

DBMS 접속

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

  • JDBC(Java DataBase Connectivity): java 언어로 다양한 종류의 데이터베이스에 접속하고 SQL문을 수행할 때 사용되는 표준 API
  • ODBC(Open DataBase Connectivity): 데이터베이스에 접근하기 위한 표준 개방형 API 
  • MyBatis: JDBC 코드를 단순화하여 사용할 수 있는 SQL Mapping 기반 오픈 소스 접속 프레임워크

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

  정적 SQL 동적 SQL
SQL 구성 커서(Cursor)를 통한 정적 처리 문자열 변수에 담아 동적 처리
개발 패턴 커서의 범위 안에서 반복문을 활용하여 SQL 작성 NVL 함수 없이 로직을 통해 SQL 작성
실행 속도 빠름 느림
사전 검사 가능 불가능

 

<웹 응용 시스템의 구조>

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

  • 사용자는 웹 응용 프로그램을 이용해 웹 서버에 접속하여 데이터를 주고 받음
  • 웹 서버는 사용자가 대용량의 데이터를 요청하면 WAS에 해당 요청을 전달
  • WAS는 수신한 요청을 트랜잭션 언어로 변환하여 DBMS에 전달

 

서버 개발

서버 개발: 서버 프로그램을 제작하여 WAS에 탑재. Java, JavaScript, Python, PHP, Ruby등이 사용.

 

서버 개발 프레임워크: 서버 프로그램 개발 시 다양한 네트워크 설정, 요청 및 응답 처리, 아키텍처 모델 구현 등을 손쉽게 처리할 수 있도록 클래스나 인터페이스를 제공하는 소프트웨어.

대부분 모델-뷰-컨트롤러 패턴을 기반

  • Spring: Java 기반. 전자정부 표준 프레임워크의 기반 기술.
  • Node.js: Java Script 기반.
  • Django: Python 기반.
  • Codeigniter: PHP 기반.
  • Ruby on Rails: Ruby 기반.

프레임워크의 특성

  • 모듈화: 캡슐화를 통해 모듈화를 강화.
  • 재사용성: 재사용 가능한 모듈들을 제공.
  • 확장성: 다형성을 통한 인터페이스 확장이 가능
  • 제어의 역흐름: 개발자가 관리하고 통제해야 하는 객체들의 제어 권한을 프레임워크에 넘겨서 생산성 향상

 

서버 개발 과정

DTO/VO, SQL, DAO, Service, Controller를 구현하는 과정을 통해 이루어짐.

 

DTO(Data Transfer Object)/VO(Value Object) 구현: 데이터 교환을 위해 사용할 객체를 만드는 과정. 알고리즘 등의 로직은 구현하지 x. 변수와 데이터를 저장하고 반환하는 메소드(get, set)만 구현

 

SQL 구현: 데이터의 삽입, 변경, 삭제 등의 작업을 수행할 SQL을 생성

 

DAO(Data Access Object) 구현: 데이터베이스에 접근하고 SQL을 활용하여 데이터를 실제로 조작하는 코드를 구현

 

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

 

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

 

배치 프로그램

배치 프로그램: 사용자와의 상호 작용 없이 여러 작업들을 미리 정해진 일련의 순서에 따라 일괄적으로 처리.

  • 정기 배치: 일, 주, 월과 같이 정해진 기간에 정기적으로 수행
  • 이벤트성 배치: 특정 조건을 설정해두고 조건이 충족될 때만 수행
  • On-Demand 배치: 사용자 요청 시 수행

--> 대용량 데이터, 자동화, 견고성, 안정성/신뢰성, 성능

 

배치 스케쥴러: 일괄 처리 작업이 설정된 주기에 맞춰 자동으로 수행되도록 지원해주는 도구

  • 스프링 배치
  • Quartz
  • Cron

 

 

* 이 글은 시나공 정보처리기사 실기 책을 토대로 작성되었습니다.

반응형