[정보처리기사 4과목 필기 예상 키워드] 목록으로 돌아가기 |
|
과목: 4. 프로그래밍 언어 활용 챕터: 1장 서버 프로그램 구현 키워드: 서버 프로그램 구현(1) |
#개발환경구축 #서버개발 #보안 및 API |
개발환경구축
개요
개발 환경 구축은 응용 소프트웨어 개발을 위해 개발 프로젝트를 이해하고 소프트웨어 및 하드웨어를 구축하는 것을 의미한다.
✔ 응용 소프트웨어가 운영될 환경과 유사한 구조로 구축
✔ 개발 프로젝트 분석 단게의 산출물을 바탕으로 개발에 필요한 하드웨어와 소프트웨어 선정
✔ 하드웨어와 소프트웨어의 성능, 편의성, 라이선스 등 비즈니스 환경에 적합한 제품들을 최종적으로 결정하여 구축
하드웨어 환경
사용자와의 인터페이스 역할을 하는 클라이언트(Client), 그리고 클라이언트와 통신하여 서비스를 제공하는 서버로 구성
✔ 클라이언트 = PC, 스마트폰 등
✔ 웹 서버, 웹 어플리케이션 서버, 데이터베이스 서버, 파일 서버 등으로 나뉨
웹 서버(Web Server) | 저용량의 정적파일(HTML, CSS, 이미지 등) 파일 등을 제공 |
웹 어플리케이션 서버(WAS) | 동적 서비스(ex.상품 인기순 정렬)를 위한 데이커 가공, 웹서버-파일서버간 인터페이스역할 |
데이터베이스 서버(DB Server) | 데이터베이스와 이를 관리하는 DBMS를 운영하는 서버 |
파일 서버(File Server) | 서비스 제공을 목적으로 유지하는 파일들을 저장하는 서버 |
소프트웨어 환경
클라이언트와 서버 운영을 위한 시스템 소프트웨어와 개발에 사용되는 개발 소프트웨어로 구성
✔ 시스템 소프트웨어: OS, 웹 서버 및 WAS 운용을 위한 서버 프로그램, DBMS 등
✔ 개발 소프트웨어: 요구사항 관리 도구, 설계/모델링 도구, 구현 도구, 빌드 도구, 테스트 도구, 형상관리 도구 등
요구사항 관리 도구 | 요구사항 수집 분석 추적을 편리하게 도와주는 소프트웨어 > JIRA, IBM DOORS, InteGREATE, Reqtify, Trello 등 |
설계/모델링 도구 | UML 지원, 개발 전 과정에서 설계/모델링을 돕는 소프트웨어 > DB Designer, PlantUML, ArgoUML 등 |
구현 도구 | 개발 언어를 통해 어플리케이션의 실제 구현을 지원하는 소프트웨어 > Eclipse, InteliJ IDEA, VSC, Netbeans, Node.js 등 |
빌드 도구 | 소스 빌드 및 배포, 라이브러리 관리를 지원 > Ant, Gradle, Maven, Jenkins 등 |
테스트 도구 | 모듈들이 요구사항에 적합하게 구현되었는지 테스트하는 소프트웨어 > CppUnit, Junit, HttpUnit, NUnit, SpringTest 등 |
형상 관리 도구 | 산출물들을 버전별로 관리하여 품질 향상을 지원하는 소프트웨어 > GIT, CVS< Subversion, Mercurial 등 |
서버 개발
개요
웹 어플리케이션의 로직을 구현할 서버 프로그램을 제작하여 웹 어플리케이션 서버(WAS)에 탑재하는 것을 의미
✔ 웹 서버로부터 받은 요청을 처리하여 결과를 반환하는 역할 수행
✔ Java, JavaScript, Python, PHP, Ruby 등이 있다
✔ 각 프로그래밍 언어에는 해당 언어로 서버 프로그램을 개발할 수 있도록 지원하는 프레임워크가 있다
*프레임워크(Framework):
'뼈대', '골조' 등을 의미하는 것으로 소프트웨어에서 특정 기능을 수행하기 위해 필요한 클래스/인터페이스를 모아둔 집합체를 의미
서버 개발 프레임워크
서버 프로그램 개발 시 다양한 네트워크 설정, 요청 및 응답 처리, 아키텍처 모델 구현 등을 손쉽게 처리할 수 있도록 클래스나 인터페이스를 제공하는 소프트웨어를 의미
✔ 지원하는 프로그래밍 언어가 제한적이므로 선정할 수 있는 프레임워크도 제한적
✔ 대부분 모델-뷰-컨트롤러(MVC) 패턴을 기반으로 개발
Spring | JAVA 기반, 전자정부 표준 프레임워크 기반 기술 |
Node.js | JavaScript 기반, 비동기 입출력 처리와 이벤트 위주의 높은 처리 성능(실시간) |
Django | Python 기반, 컴포넌트 재사용+플러그인화 강조로 신속한 개발 가능 |
Codeigniter | PHP 기반, 인터페이스 간편, 서버 자원 적게 사용 |
Ruby on Rails | Ruby 기반, 트스트 웹 서버 지원, DB작업 단순화+자동화 개발 코드 길이가 짧음, 신속한 개발 |
서버 프로그램 구현
응용 소프트웨어와 동일하게 모듈 및 공통 모듈을 개발 후 모듈을 통합하는 방식으로 구현
✔ 모듈화를 통해 분리된 시스템의 각 기능들로, 서브 루틴, 서브 시스템, 소프트웨어 내의 프로그램, 작업 단위와 같은 의미로 사용
✔ 모듈 개발 시 기능적 독립성을 고려하여 다른 모듈과의 과도한 상호작용 배제함으로써 특정 모듈의 수정이 다른 모듈들에게 영향을 미치지 않아야 함
✔ 모듈의 독립성은 결합도(Coupling)과 응집도(Cohesion)에 의해 측정되며 독립성을 높이려면 모듈 결합도를 약하게 하고 응집도를 강하게 하며 모듈의 크기를 작게 만들어야 함
✔ 공통 모듈은 여러 프로그램에서 재사용(Reuse)할 수 있는 모듈을 의미, 자주 사용되는 계산식이나 매번 필요한 사용자 인증 같은 기능들이 공통 모듈로 구성될 수 있다.
루틴 | 기능을 가진 명령들의 모임 |
메인루틴 | 프로그램 실행의 큰 줄기가 되는 것 |
서브루틴 | 메인 루틴에 의해 필요할 때마다 호출되는 루틴 |
보안 및 API
보안의 개요
소프트웨어 개발 과정에서 발생할 수 있는 보안 취약점을 최소화하여 보안 위협으로부터 안전한 소프트웨어를 개발하기 위한 일련의 보안 활동을 의미
✔ 보안은 데이터의 기밀성, 무결성, 가용성을 유지하는 것을 목표로 함
소프트웨어 개발 보안 점검 항목 | |
세션 통제 | 세션-세션 연결로 인해 발생하는 정보 관리 |
입력데이터 검증 및 표현 | 검증 실패시 이를 처리할 수 있도록 코딩하는 것 |
보안기능 | 인증,접근제어,기밀성,암호화 등의 기능 |
시간 및 상태 | 동시수행/멀티프로세서 환경에서 시스템이 원활히 동작하도록 코딩하는 것 |
에러처리 | 발생가능 오류를 사전에 정의하여 문제 예방 |
코드 오류 | 형 변환, 자원 반환 등을 고려하여 코딩하는 것 |
캡슐화 | 속성과 함수를 하나의 객체로 묶어 코딩하는 것 |
API(Application Programming Interface)
응용 프로그램 개발 시 운영체제나 프로그래밍 언어 등에 있는 라이브러리를 이용할 수 있도록 규칙 등을 정의해놓은 인터페이스
리모컨과 비교하면 이해가 쉽다. 리모컨으로 TV의 채널을 바꾸기 위해서는 채널 변경 버튼을 눌러야 하고, 소리를 조절하기 위해서는 볼륨 조절 버튼을 눌러야 하는 등 제조사가 미리 정해둔 방법을 이용해야 한다. 여기서 TV를 조작하기 위해 제조사가 미리 정해둔 방법이 바로 API에 해당된다.
✔ 프로그래밍 언어에서 특정 작업을 수행하기 위해 사용되거나 운영체제의 파일 제어, 화상 처리, 문자 제어 등의 기능을 활용
✔ 개발에 필요한 여러 도구를 제공하기 때문에 이를 이용하면 원하는 기능을 쉽고 효율적으로 구현할 수 있음
✔ Windows API, 단일 유닉스 규격(SUS), Java API, 웹 API 등이 있으며 누구나 무료로 사용할 수 있게 공개된 API를 Open API라고 한다.

정보처리기사 3과목 필기 (상시업뎃)
2021년 정보처리기사 공부를 위해 각 과목/챕터 별 Best 키워드를 정리해 놓은 글입니다. 시나공 문제집의 기출빈도와 중요도를 기준으로 정리된 키워드들이며, 순서와 관계 없이
y-oni.tistory.com
참고: 시나공 정보처리기사 필기 (저자: 강윤석, 김용갑, 김우경, 김정준 | 출판사: 길벗), 유튜브 주간컴공TV
'2021 정보처리기사 > 4과목: 프로그래밍 언어 활용' 카테고리의 다른 글
[정보처리기사 4과목] 프로그래밍 언어 활용(4) (0) | 2021.05.05 |
---|---|
[정보처리기사 4과목] 프로그래밍 언어 활용(3) (0) | 2021.05.04 |
[정보처리기사 4과목] 서버 프로그램 구현(2) (0) | 2021.05.02 |
[정보처리기사 4과목] ✔ 프로그래밍 언어 활용(2) (0) | 2021.04.29 |
[정보처리기사 4과목] ✔ 프로그래밍 언어 활용(1) (2) | 2021.04.29 |