정보처리기사 - 서버 프로그램 구현 #80~84
2023. 8. 19. 12:18ㆍ자격증/정보처리기사
80. 개발 지원 도구
80.1 통합 개발 환경(IDE; Intergrated Development Environment)
개발에 필요한 환경, 즉 편집가(Editor), 컴파일러(Compiler), 디버거(Debugger) 등의 다양한 툴을 하나의 인터페이스로 통합하여 제공하는 환경
- 통합 개발 환경 도구는 통합 개발 환경을 제공하는 소프트웨어를 의미
- 통합 개발 환경 도구는 코드를 실행하거나 테스트할 때 오류가 발생한 부분을 시각화하므로 수정이 용이
80.2 통합 개발 환경 도구의 종류
프로그램 | 개발사 | 플랫폼 | 운영체제 | 지원 언어 |
---|---|---|---|---|
이클립스 (Eclipse) |
Eclipse Foundation, IBM | 크로스 플랫폼 | Windows, 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) |
Android | Windows, Linux, MacOS | Java, C, C++ | |
IDEA | JetBrains (이전 IntelliJ) |
크로스 플랫폼 | Windows, Linux, MacOS | Java, JSP, XML, Go, Kotlin, PHP 등 |
- 크로스 플랫폼(Cross Platform) : 여러 종류의 시스템에서 공통으로 사용될 수 있는 소프트웨어로, 멀티 플랫폼(Multi Platform) 이라고도 불림
80.3 빌드 도구
소스 코드 파일들을 컴퓨터에서 실행할 수 있는 제품 소프트웨어로 변환하는 과정 또는 결과물
- 빌드 도구는 전처리(Preprocessing), 컴파일(Compile) 등의 작업을 수행
- 대표적인 빌드 도구
종류 | 특징 |
---|---|
Ant (Another Neat Tool) |
- 아파치 소프트웨어 재단에서 개발 - 자바 프로젝트의 공식적인 빌드 도구 - 정해진 규칙이나 표준이 없음 |
Maven | - 아파치 소프트웨어 재단에서 Ant의 대안으로 개발 - 의존성(Dependency)을 설정하여 라이브러리를 관리 - 규칙이나 표준이 존재하여 예외 사항만 기록 |
Gradle | - 한스 도커(Hans Dockter)가 Ant와 Maven을 보완하여 개발 - 안드로이드 스튜디오의 공식 빌드 도구 - 그루비(Groovy) 기반의 빌드 스크립트를 사용 |
- 전처리(Preprocessing) : 컴파일에 앞서 코드에 삽입된 주석을 제거하거나 매크로들을 처리하는 과정
- 의존성(Dependency) : Maven이나 Gradle에서 라이브러리를 관리할 때 사용하는 명령어로, 빌드 스크립트 안에 사용하고자하는 라이브러리를 <dependency> 예약어로 등록하면, 빌드 수행 시 인터넷 상의 라이브러리 저장소에서 해당 라이브러리를 찾아 코드에 추가해 줌
- 라이브러리(Library) : 개발 편의를 위해 자주 사용되는 코드, API, 클래스, 값, 자료형 등의 다양한 자원들을 모아놓은 것
- 그루비(Groovy) : 자바를 기반으로 여러 프로그래밍 언어들의 장점을 모아 만든 동적 객체지향 프로그래밍 언어
80.4 기타 협업 도구
개발에 참여하는 사람들이 서로 다른 작업 환경에서 원활이 프로젝트를 수행할 수 있도록 도와주는 도구
- 협업 소프트웨어, 그룹웨어(Groupware) 등으로 불림
- 일정 관리, 업무흐름 관리, 정보 공유, 커뮤니케이션 등의 업무 보조 도구가 포함
81. 서버 개발
81.1 서버 개발
웹 애플리케이션의 로직을 구현할 서버 프로그램을 제작하여 웹 애플리케이션 서버(WAS)에 탑재하는 것
- 서버 개발에 사용되는 프로그래밍 언어에는 Java, JavaScript, Python, PHP, Ruby 등이 존재
- 각 프로그래밍 언어에는 해당 언어로 서버 프로그램을 개발할 수 있도록 지원하는 프레임워크가 존재
- 웹 애플리케이션 로직 : 사용자의 입력에 따라 다른 결과를 보여주는 동적 서비스를 제공하기 위한 알고리즘을 의미
- 프레임워크(Framework) : 소프트웨어에서 특정 기능을 수행하는 데 필요한 클래스나 인터페이스 등을 모아둔 집합체
81.2 서버 개발 프레임워크
서버 프로그램 개발 시 다양한 네트워크 설정, 요청 및 응답 처리, 아키텍처 모델 구현 등을 손쉽게 처리할 수 있도록 클래스나 인터페이스를 제공받는 소프트웨어
- 서버 개발 프레임워크의 대부분은 모델-뷰-컨트롤러(MVC) 패턴을 기반으로 개발
- 모델-뷰-컨트롤러(MVC) : 시스템을 세 부분으로 분리하여 서로 영향받지 않고 개발할 수 있는 아키텍처 패턴
- 서버 개발 프레임워크의 종류
프레임워크 | 특징 |
---|---|
Spring | - Java를 기반으로 만든 프레임워크 - 전자정부 표준 프레임워크의 기반 기술로 사용되고 있음 |
Node.js | - JavaScript를 기반으로 만든 프레임워크 - 비동기 입·출력 처리와 이벤트 위주의 높은 처리 성능을 갖고 있어 실시간으로 입·출력이 빈번한 애플리케이션에 적합 |
Django | - Python을 기반으로 만든 프레임워크 - 컴포넌트의 재사용과 플러그인화를 강조하여 신속한 개발이 가능하도록 지원 |
Codeigniter | - PHP를 기반으로 만든 프레임워크 - 인터페이스가 간편하며 서버 자원을 적게 사용 |
Ruby on Rails | - Ruby를 기반으로 만든 프레임워크 - 테스트를 위한 웹 서버를 지원하며 데이터베이스 작업을 단순화, 자동화시켜 개발 코드의 길이가 짧아지게 함으로써 신속한 개발이 가능 |
- 플러그인화 : 재사용과 비슷한 의미로 전원 플러그처럼 마음대로 끼웠다 뺐다 할 수 있다는 것을 의미
81.3 서버 개발 과정
DTO/VO, SQL, DAO, Service, Controller를 각각 구현하는 과정
- 구현 순서는 개발자가 임의로 변경 가능
- 구현 과정
과정 | 내용 |
---|---|
DTO/VO 구현 | - 데이터 교환을 위해 사용할 객체를 만드는 과정 - 송·수신할 데이터의 자료형(Data Type)에 맞는 변수 및 객체를 생성 |
SQL 구현 | - 데이터의 삽입, 변경, 삭제 등의 작업을 수행할 SQL문을 생성하는 과정 - SQL문은 소스 코드 내에 직접 입력 또는 별도의 XML 파일로 관리 |
DAO 구현 | 데이터베이스에 접근하고, SQL을 활용하여 데이터를 실제로 조작하는 코드를 구현하는 과정 |
Service 구현 | 사용자의 요청에 응답하기 위한 로직을 구현하는 과정 |
Controller 구현 | 사용자의 요청에 적절한 서비스를 호출하여, 그 결과를 사용자에게 반환하는 코드를 구현하는 과정 |
- DTO(Data Transfer Object) : 데이터의 교환을 위해 생성되는 객체
- VO(Value Object) : DTO와 동일하지만 읽기만 가능한 객체로 변경이 불간으
- DAO(Data Access Object) : 데이터베이스에 접근하여 데이터를 조회·생성·수정·삭제 작업을 수행하는 객체
- 구현 과정은 광산 채굴 시스템으로 비유할 수 있음
- 광산(Database)에서 가져올 광석을 임시로 보관할 창고(DTO/VO)를 만들고 그 사이에 레일(SQL)을 설치함. 광석을 옮길 인부와 수레(DAO)를 갖추고, 광석을 가공할 기술자(Service)와 기술자들을 통제할 매니저(Controller)를 고용하면 시스템이 완성됨
81.3.1 예제
- 서버 개발 과정을 도식화한 다음의 이미지에서, 각 객체 간 메시지 및 자료의 흐름을 확인하라
1. 웹 사이트로부터 사용자의 요청이 Controller에 전달
2. Controller는 해당 요청에 맞는 Service를 호출
3. Service는 수행을 위한 데이터를 DAO에 요청
4 ~ 6. DAO는 XML을 통해 Database로부터 Service가 요청한 데이터를 가져옴
7. 가져온 데이터를 Service에 반환
8. Service의 수행 결과를 Controller에 반환
9. Controller의 수행 결과를 웹 사이트에 반환
※ DTO/VO는 1, 5, 9번 과정을 제외한 데이터 교환 전 과정에서 요청과 응답 시 사용
82. 보안 및 API
82.1 소프트웨어 개발 보안
소프트웨어 개발 과정에서 발생할 수 있는 보안 취약점을 최소화하여 보안 위협으로부터 안전한 소프트웨어를 개발하기 위한 일련의 보안 활동을 의미
- 데이터의 기밀성, 무결성, 가용성 등의 보안 요소를 충족시키는 것을 목표로 함
- 정부에서 제공하는 소프트웨어 개발 보안 가이드를 참고하여 소프트웨어 개발 과정에서 점검해야 할 보안 항목들을 점검
82.2 소프트웨어 개발 보안 항목 점검
점검 항목 | 내용 |
---|---|
세션 통제 | 세션의 연결과 연결로 인해 발생하는 정보를 관리하는 것 |
입력 데이터 검증 및 표현 | 입력 데이터에 대한 유효성 검증체계를 갖추고, 검증 실패 시 이를 처리할 수 있도록 코딩하는 것 |
보안 기능 | 인증, 접근제어, 기밀성, 암호화 등이 가능 |
시간 및 상태 | 동시 수행을 지원하는 병렬 처리 시스템이나 다수의 프로세스가 동작하는 환경에서 시간과 실행 상태를 관리하여 시스템이 원활히 동작하도록 코딩하는 것 |
에러처리 | 소프트웨어 실행 중 발생할 수 있는 오류들을 사전에 정의하여 에러로 인해 발생할 수 있는 문제들을 예방하는 것 |
코드 오류 | 개발자들이 코딩 중 실수하기 쉬운 형(Type) 변환, 자원의 반환 등을 고려하며 코딩하는 것 |
캡슐화 | 속성과 데이터를 처리하는 함수를 하나의 객체로 묶어 코딩하는 것 |
API 오용 | API를 잘못 사용하거나 보안에 취약한 API를 사용하지 않도록 고려하여 코딩하는 것 |
- 세션(Session) : 서버와 클라이언트의 연결
82.3 API(Application Programming Interface)
응용 프로그램 개발 시 운영체제나 프로그래밍 언어 등에 있는 라이브러리를 이용할 수 있도록 규칙 등을 정의해 놓은 인터페이스를 의미
- 라이브러리에 있는 다양한 기능들을 손쉽게 이용할 수 있도록 도와주므로 효율적인 개발이 가능
- 누구나 무료로 사용할 수 있게 공개된 API를 Open API라고 함
- API의 종류
- Windows API
- 단일 유닉스 규격(SUS)
- Java API
- 웹 API
83. 배치 프로그램
83.1 배치 프로그램(Batch Program)
사용자와의 상호 작용 없이 여러 작업들을 미리 정해진 일련의 순서에 따라 일괄적으로 처리하도록 만든 프로그램
- 배치 프로그램의 필수 요소
요소 | 내용 |
---|---|
대용량 데이터 | 대량의 데이터를 가져오거나, 전달하거나, 계산하는 등의 처리가 가능해야 함 |
자동화 | 심각한 오류가 발생하는 상황을 제외하고는 사용자의 개입 없이 수행되어야 함 |
견고성 | 잘못된 데이터나 데이터 중복 등의 상황으로 중단되는 일 없이 수행되어야 함 |
안정성/신뢰성 | 오류가 발생하면 오류의 발생 위치, 시간 등을 추적할 수 있어야 함 |
성능 | - 다른 응용 프로그램의 수행을 방해하지 않아야 함- 지정된 시간 내에 처리가 완료되어야 함 |
- 배치 프로그램은 주기마다 사용되는 백업 작업, 위부의 데이터베이스로부터 최신 자료를 갱신하는 작업 등 대용량의 데이터가 주기적으로 교환되는 업무에 주로 사용
- 배치 프로그램은 대용량의 데이터가 오가는 만큼 자원을 많이 차지하므로 업무에 방해되지 않도록 주로 야간이나 새벽에 수행되도록 설정
83.3 배치 스케줄러(Batch Scheduler)
일괄 처리(Batch Processing) 작업이 설정된 주기에 맞춰 자동으로 수행되도록 지원해주는 도구
- 특정 업무(Job)를 원하는 시간에 처리할 수 있도록 지원한다는 특성 때문에 잡 스케줄러(Job Scheduler)라고도 불림
- 배치 스케줄러의 종류
배치 스케줄러 | 특징 |
---|---|
스프링 배치 (Spring Batch) |
- Spring Source 사와 Accenture 사가 2007년 공동 개발한 오픈 소스 프레임워크 - 로그 관리, 추적, 트랜잭션 관리, 작업 처리 통계, 작업 재시작 등의 다양한 기능을 제공 |
Quartz | - 스프링 프레임워크로 개발되는 응용 프로그램들의 일괄 처리를 위한 다양한 기능을 제공하는 오픈 소스 라이브러리 - 수행할 작업과 수행 시간을 관리하는 요소들을 분리하여 일괄 처리 작업에 유연성을 제공 |
Cron | - 리눅스의 기본 스케줄러 도구 - crontab 명령어를 통해 작업 예약이 가능 |
83.3 crontab 명령어 작성 방법
- 작업 예약 형식
83.3.1 방법 1
분, 시, 일, 월, 요일에 "*"를 입력하면 매 시기마다 수행
* * * * * /root/com_1.sh
- 매월 매일 매시 매분마다 com_1.sh를 실행
30 1 * * * /root/com_2.sh
- 매월 매시 1시 30분에 com_2.sh를 실행
83.3.2 방법 2
시기 우측에 '/[단위]'를 입력하면 시기를 단위로 나눈 나머지가 0일 때마다 명령어를 수행
30 * /3 * * * /root/com_1.sh
- 매월 매시 0시 30분부터 3시간마다 com_1.sh를 실행 (0:30, 3:30, 6:30, ···, 21:30)
83.3.3 방법 3
'[시작 시기]-[종료 시기]'를 통해 특정 구간에만 반복하여 명령어를 실행할 수 있음
* 18-23 20 * * /root/com_1.sh
- 매월 20일 18~23시 사이에 매분마다 com_1.sh를 실행
83.3.4 방법 4
시기는 '[시기1], [시기2], [시기3], ···'를 통해 특정 시기에 명령어를 실행할 수 있음
30 23 25 4,9,11 * /root/com_1.sh
- 4/9/11월의 25일 23시 30분에 com_1.sh를 실행
84. 패키지 소프트웨어
84.1 패키지 소프트웨어(Package Software)
기업에서 일반적으로 사용하는 여러 기능을 통합하여 제공하는 소프트웨어
- 기업에서는 패키지 소프트웨어를 구입하여 기업 환경에 적합하게 커스터마이징(Customizing)하여 사용
- 패키지 소프트웨어를 이용하여 시스템을 구축하는 방식을 패키지 개발 방식이라고 함
- 기능 요구사항을 70% 이상 충족시키는 패키지 소프트웨어가 있을 때만 사용하는 것이 적합
- 업무 특성에 맞게 전용으로 개발되는 소프트웨어와 비교하여 안정성, 라이선스, 생산성 등에서 차이가 있음
- 전용 개발 소프트웨어 : 패키지 소프트웨어에 대응되는 용어로, 사업 환경에 맞춰 직접 개발한 소프트웨어를 의미
84.2 패키지 소프트웨어와 전용 개발 소프트웨어의 비교
구분 | 패키지 소프트웨어 | 전용 개발 소프트웨어 |
---|---|---|
기능 요구 사항 | 70% 이상 충족시키는 패키지 소프트웨어가 있는 경우 이용 | 모든 기능 요구사항 반영 가능 |
안정성 | 품질이 검증되었고, 업계 표준 준용 | 개발자의 역량에 따라 달라짐 |
라이선스 | 판매자 | 회사 |
생산성 | 개발을 위한 인력과 시간이 절약 | 개발을 위한 인력과 시간이 필요 |
호환성 | 보장이 안 됨 | 설계 단계부터 고려하여 개발 |
유지보수 | 결함 발생 시 즉시 대응이 어려움 | 결함 발생 시 즉시 대응이 가능 |
'자격증 > 정보처리기사' 카테고리의 다른 글
정보처리기사 - 인터페이스 구현 #92~98 (0) | 2023.08.19 |
---|---|
정보처리기사 - 인터페이스 구현 #85~91 (0) | 2023.08.19 |
정보처리기사 - 서버 프로그램 구현 #76~79 (0) | 2023.08.19 |
정보처리기사 - 서버 프로그램 구현 #73~75 (0) | 2023.08.19 |
정보처리기사 - 서버 프로그램 구현 #70~72 (0) | 2023.08.19 |