Study/정보처리기사

정보처리기사 실기 4장. 서버 프로그램 구현_5

edoyyoy 2023. 9. 25. 22:38

4-11. 개발 지원 도구

• 통합 개발 환경 (IDE; Integrated Development Environment)

   개발에 필요한 다양한 툴을 하나의 인터페이스로 통합하여 제공하는 환경

      ‣ 통합 환경 도구 : 통합 개발 환경을 제공하는 소프트웨어

      ‣ 편집기, 컴파일러, 디버거 등

 

   - 통합 개발 환경 도구의 종류

프로그램 개발사 플랫폼 운영체제 지원 언어
이클립스 (Eclipse) Eclipse Foundation,
IBM
크로스 플랫폼 Window, Linux,
MacOS 등
Java, C, C++, PHP, JSP등
비주얼 스튜디오
(Visual Studio)
Microsoft Win32, Win64 Windows Basic, C, C++, C#, .Net 등
엑스 코드 (Xcode) Apple Mac, iPhone MacOS, iOS C, C++, C#, Java,
AppleScript 등
안드로이드 스튜디오
(Android Studio)
Google Android Windows, Linux,
MacOS
Java, C, C++
IDEA JetBrains
(이전 IntelliJ)
크로스 플랫폼 Windows, Linux,
MacOS
Java, JSP, XML, Go,
Kotlin, PHP등

✓ 크로스 플랫폼 (= 멀티 플랫폼) : 여러 종류의 시스템에서 공통으로 사용될 수 있는 소프트웨어 

 

 

• 빌드 도구

   소스 코드 파일들을 컴퓨터에서 실행할 수 있는 제품 소프트웨어로 변환하는 과정 또는 결과물

      ‣ 전처리, 컴파일 등의 작업을 수행

     ✓ 전처리 : 컴파일에 앞서 코드에 삽입된 주석을 제거하거나 매크로들을 처리하는 과정

 

   - 대표적인 빌드 도구

 

Ant (Another Neat Tool) 자바 프로젝트의 공식적인 빌드 도구
정해진 규칙이나 표준이 없음
아파치 소프트웨어 재단
Maven 의존성을 설정하여 라이브러리를 관리
규칙이나 표준이 존재하여 예외 사항만 기록
아파치 소프트웨어 재단에서 Ant의 대안으로 개발
Gradle 안드로이드 스튜디오의 공식 빌드 도구
그루비(Groovy) 기반의 빌드 스크립트를 사용
한스 도커(Hans Docker)가 Ant와 Maven을 보완하여 개발

 

 

• 기타 협업 도구 

   개발에 참여하는 사람들이 서로 다른 작업 환경에서 원활히 프로젝트를 수행할 수 있도록 도와주는 도구

      ‣ 협업 소프트웨어, 그룹웨어

      ‣ 일정 관리, 업무흐름 관리, 정보 공유, 커뮤니케이션 등의 업무 보조 도구가 포함

 

 


4-12. 서버 개발

• 서버 개발

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

      ‣ 서버 개발에 사용되는 프로그래밍 언어 : Java, JavaScript, Python, PHP, Ruby 등

 

 

• 서버 개발 프레임 워크 (= 웹 프레임 워크)

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

 

   - 서버 개발 프레임워크의 종류

 

Spring JAVA 전자정부 표준 프레임워크의 기반 기술로 사용되고 있음
Node.js JavaScript 비동기 입출력 처리와 이벤트 위주의 높은 처리 성능을 갖고 있어
실시간으로 입출력이 빈번한 애플리케이션에 적합
Django Python 컴포넌트의 재사용과 플러그인화를 강조하여 신속한 개발 가능
Codeigniter PHP 인터페이스가 간편하며 서버 자원을 적게 사용함
Ruby on Rails Ruby 테스트를 위한 웹 서버를 지원하며,
데이터베이스 작업을 단순화∙자동화시켜 개발 코드의 길이가 짧아지게 함으로써 신속한 개발 가능

 

 

• 서버 개발 과정

   - 구현 과정

 

DTO/VO 구현 데이터 교환을 위해 사용할 객체를 만드는 과정
송수신할 데이터의 자료형에 맞는 변수 및 객체를 생성
SQL 구현 데이터의 삽입, 변경, 삭제 등의 작업을 수행할 SQL문을 생성하는 과정
SQL문은 소스 코드 내에 직접 입력하거나 별도의 XML파일로 관리함
DAO 구현 데이터베이스에 접근하고 SQL을 활용해 데이터를 실제로 조작하는 코드를 구현하는 과정
Service 구현 사용자의 요청에 응답하기 위한 로직을 구현하는 과정
Controller 구현 사용자의 요청에 적절한 서비스를 호출해, 그 결과를 사용자에게 반환하는 코드를 구현하는 과정

      ‣ 구현 순서는 개발자가 임의로 변경할 수 있음

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

 

      ✓ DTO (Data Transfer Object) : 데이터의 교환을 위해 생성되는 객체

      ✓ VO (Value Object) : DTO와 동일하지만 읽기만 가능한 객체로 변경이 불가능함

      ✓ DAO (Data Access Object) : 데이터베이스에 접근하여 데이터를 조회, 생성, 수정, 삭제 작업을 수행하는 객체

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

 

 


4-13. 보안 및 API

• 소프트웨어 개발 보안

   보안 취약점을 최소화하여 보안 위협으로부터 안전한 소프트웨어를 개발하기 위한 일련의 보안 활동

      ‣ 데이터의 기밀성, 무결성, 가용성 등의 보안 요소를 충족시키는 것을 목표

      ‣ 보안의 3대 요소 : 기밀성, 무결성, 가용성

 

 

• 소프트웨어 개발 보안 점검 항목

 

세션 통제 세션의 연결로 인해 발생하는 정보를 관리
입력 데이터 검증 및 표현 입력 데이터에 대한 유효성 검증체계를 갖추고, 검증 실패 시 이를 처리할 수 있도록 코딩
보안 기능 인증, 접근제어, 기밀성, 암호화 등의 기능
시간 및 상태 동시 수행을 지원하는 병렬 처리 시스템이나 다수의 프로세스가 동작하는 환경에서
시간과 실행상태를 관리해 시스템이 원활히 동작하도록 코딩
에러 처리 소프트웨어 실행 중 발생할 수 있는 오류들을 사전에 정의해 에러로 인해 발생할 수 있는 문제들을 예방
코드 오류 코딩 중 실수하기 쉬운 형 변환, 자원의 반환 등을 고려하며 코딩
캡슐화 속성과 데이터를 처리하는 함수를 하나의 객체로 묶어 코딩
API 오용 API를 잘못 사용하거나 보안에 취약한 API를 사용하지 않도록 고려하며 코딩

 

 

• API (Application Programming Interface)

   라이브러리를 이용할 수 있도록 규칙 등을 정의해 놓은 인터페이스

      ‣ 라이브러리에 있는 기능을 쉽게 이용할 수 있도록 도와주므로 효율적인 개발 가능

      ‣ Open API : 무료로 사용할 수 있게 공개된 API

      ‣ API의 종류 : Window API, 단일 유닉스 규격 (SUS), Java API, 웹 API

 

 


4-14. 배치프로그램

• 배치 프로그램 (Batch Program)

   여러 작업들을 미리 정해진 일련의 순서에 따라 일괄적으로 처리하도록 만든 프로그램

 

   - 배치 프로그램의 필수 요소

 

대용량 데이터 대량의 데이터를 가져오거나, 전달하거나, 계산하는 등의 처리가 가능해야 함
자동화 심각한 오류가 발생하는 상황을 제외하고는 사용자의 개입 없이 수행되어야 함
견고성 잘못된 데이터나 데이터 중복 등의 상황으로 중단되는 일 없이 수행되어야 함
안정성/신뢰성 오류가 발생하면 오류의 발생 위치, 시간 등을 추적할 수 있어야 함
성능 다른 응용 프로그램의 수행을 방해하지 않아야 함
지정된 시간 내에 처리가 완료되어야 함

 

 

• 배치 스케줄러 (Batch Scheduler, 잡 스케쥴러 Job Scheduler)

   일괄 처리 (Batch Processing) 작업이 설정된 주기에 맞춰 자동으로 수행되도록 지원해주는 도구

 

   - 배치 스케줄러의 종류

스프링 배치
(Spring Batch)
로그 관리, 추적, 트랜잭션 관리, 작업 처리 통계, 작업 재시작 등의 다양한 기능 제공
Spring Source사와 Accenture사가 2007년 공동 개발한 오픈 소스 프레임워크
Quartz 스프링 프레임워크로 개발되는 응용 프로그램들의 일괄 처리를 위한
다양한 기능을 제공하는 오픈 소스 라이브러리
수행할 작업과 수행 시간을 관리하는 요소들을 분리해 일괄 처리 작업에 유연성을 제공
Cron 리눅스의 기본 스케줄러 도구
crontab 명령어를 통해 작업을 예약할 수 있음

   ✓ crontab 명령어 작성 방법

         - 작업 예약 형식

 

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

 

            ‣ 분, 시, 일, 월, 요일에 '*'를 입력하면 매 시기마다 수행

            ‣ 시기 우측에 '/[단위]'를 입력하면 시기를 단위로 나눈 나머지가 0일 때마다 명령어 수행

            ‣ '[시작 시기]-[종료 시기]'를 통해 특정 구간에만 반복하여 명령어 수행

            ‣ 시기는 '[시기1], [시기2], [시기3], ⋯'를 통해 특정 시기에 명령어 수행