목차
✨ 주요 키워드 ? 웹 서버, 웹 애플리케이션 서버, 개발 언어 선정 기준, 프레임워크, 소프트웨어 개발 보안, API, 배치 프로그램, 스프링 배치, Quartz, 패키지 소프트웨어
📌 개발 환경 구축은 응용 소프트웨어 개발을 위해 개발 프로젝트를 이해하고 소프트웨어 및 하드웨어 장비를 구축하는 것을 의미한다.
📌 하드웨어 환경은 사용자와의 인터페이스 역할을 하는 클라이언트(Client) 그리고 클라이언트와 통신하여 서비스를 제공하는 서버(Server)로 구성된다.
HTTP/HTTPS 지원 | 브라우저로부터 요청을 받아 응답할 때 사용되는 프로토콜 |
통신 기록(Communication Log) | 처리한 요청들을 로그 파일로 기록하는 기능 |
정적 파일 관리 (Managing Static File) |
HTML, CSS, 이미지 등의 정적 파일들을 저장하고 관리하는 기능 |
대역폭 제한 (Bandwidth Throttling) |
네트워크 트래픽의 포화를 방지하기 위해 응답 속도를 제한하는 기능 |
가상 호스팅(Vitual Hosting) | 하나의 서버로 여러 개의 도메인 이름을 연결하는 기능 |
인증(Authentication) | 사용자가 합법적인 사용자인지를 확인하는 기능 |
💡 정적 파일(Static File) : 정적 파일은 인터넷 브라우저와 같은 클라이언트에서 별도의 처리 과정 없이 다운로드 하여 사용자에게 보여주는 파일로 HTML, CSS, 이미지 파일 등이 있다.
💡 동적 서비스(Dynamic Service) : 사용자의 입력에 따라 다른 결과를 보여주는 서비스를 의미한다. 쇼핑몰을 예로 들면 상품들을 인기 순으로 정렬하기 위해 클릭을 했을 때 나오는 화면은 미리 만들어져 있는 페이지가 아닌 클릭한 순간 상품들을 정렬하여 페이지를 구성한 후 표시하는 동적인 화면이다.
💡 HTTP/HTTPS(Hyper Text Transfer Protocol [Secure]) : HTTP는 하이퍼텍스트 문서를 전송하기 위해 사용하는 프로토콜이고, HTTPS는 HTTP에 보안 모듈을 결합시킨 프로토콜이다.
💡 네트워크 대역폭(Bandwidth) : 네트워크 대역폭은 네트워크가 단위 시간 내 전달할 수 있는 최대 크기의 전달 용량을 의미한다. 대역폭이 높을수록 많은 데이터가 네트워크에 실려서 전달하고 전달받을 수 있다.
💡 트래픽 : 인터넷상에서 송수신 되는 모든 통신의 양을 의미한다.
📌 소프트웨어 환경은 클라이언트와 서버 운영을 위한 시스템 소프트웨어와 개발에 사용되는 개발 소프트웨어로 구성된다.
적정성 | 개발하려는 소프트웨어의 목적에 적합해야 한다. |
효율성 | 코드의 작성 및 구현이 효율적이어야 한다. |
이식성 | 다양한 시스템 및 환경에 적용이 가능해야 한다. |
친밀성 | 개발 언어에 대한 개발자들의 이해도와 활용도가 높아야 한다. |
범용성 | 다른 개발 사례가 존재하고 여러 분야에서 활용되고 있어야 한다. |
💡 JIRA : 짧은 주기의 개발단위를 반복하여 프로젝트를 완성시켜나가는 에자일 방식의 프로젝트 관리 협업 툴
💡 IBM DOORS : 업계에서 가장 널리 사용되는 요구사항 관리 도구 중 하나로, 개발 팀이 전체 개발 라이프사이클에서 요구사항을 캡처 추적 및 분석할 수 있도록 한다.
💡 Reqtify : 포괄적인 추적 기능을 구현할 수 있는 개방적이고 유연하며 사용하기 쉬운 추적 솔루션이다. 100개 이상의 커넥터를 통해 추적 가능한 정보(요구사항, 구현 결과물, 테스트, 결함 등)를 쉽게 해주는 툴이다.
💡 트렐로(Trello) : 프로젝트를 관리하는 툴이다. Boards에 마치 포스트잇을 붙여놓은 것처럼 일정 및 프로젝트 관리를 해주는 툴이다.
💡 UML : 시스템 분석, 설계, 구현 등 시스템 개발 과정에서 시스템 개발자와 고객 또는 개발자 상호 간의 의사소통이 원활하게 이루어지도록 표준화한 대표적인 객체지향 모델링 언어이다.
💡 IntelliJ IDEA : JetBrains이 개발한 자바를 포함한 다양한 프로그래밍 언어를 위한 통합 개발 환경(IDE)으로 프로그래머의 생산성을 향상시키기 위해 설계되었으며, 코드 작성, 디버깅, 리팩토링, 테스트, 버전 관리 등의 개발 작업에 필요한 다양한 기능을 제공한다. 기존 Eclipse/Netbeans 등과 다르게 사용자 편의성에 집중하고 있다.
💡 NetBeans : 주로 Java 용 인기 소프트웨어 개발 플랫폼으로, 개발자가 응용 프로그램을 빠르고 쉽게 작성할 수 있도록 마법사와 템플릿을 제공한다. 광범위한 도구 전반에 걸쳐 모듈식 구성 요소가 포함되어 있으며 개발자가 GUI를 사용하여 응용 프로그램을 만들 수 있는 IDE(통합 개발 환경)가 있다. NetBeans는 주로 Java 개발자를 위한 도구이지만 PHP, C 및 C++ 및 HTML5도 지원한다.
💡 Node.js : Chrome V8 JavaScript 엔진으로 빌드된 JavaScript 런타임이다. 즉, 노드를 통해 다양한 자바스크립트 애플리케이션을 실행할 수 있으며, 서버를 실행하는 데 제일 많이 사용된다.
💡 Spring Test : 스프링 프레임워크에서 제공하는 통합 테스트 및 스프링 MVC 통합 테스트를 지원한다. Java 코드에 대해서 스프링 컨테이너 생성, 트랜잭션, DB와 연동 관리를 지원하며 웹 관련 테스트를 위한 객체를 지원한다.
💡 Mercurial : 소프트웨어 개발을 위한 크로스-플랫폼 분산 버전 관리 도구이다.
📌 서버 개발은 웹 애플리케이션의 로직을 구현할 서버 프로그램을 제작하여 웹 애플리케이션 서버(WAS)에 탑재하는 것을 의미한다.
💡 루비는 간결함과 생산성을 강조한 동적인 오픈 소스 프로그래밍 언어이다. 루비의 우아한 문법으로 자연스럽게 읽히고 쓰기 편한 프로그램을 만들 수 있다.
💡 프레임워크(Framework) : 프레임워크는 사전적으로 '뼈대', '골조' 를 의미하는데 소프트웨어에서는 특정 기능을 수행하기 위해 필요한 클래스나 인터페이스 등을 모아둔 집합체를 의미한다.
📌 서버 개발 프레임워크는 서버 프로그램 개발 시 다양한 네트워크 설정, 요청 및 응답 처리, 아키텍처 모델 구현 등을 손쉽게 처리할 수 있도록 클래스나 인터페이스를 제공하는 소프트웨어를 의미한다.
프레임워크 | 특징 |
Spring | JAVA를 기반으로 만들어진 프레임워크로 전자정부 표준 프레임워크의 기반 기술로 사용되고 있다. |
Node.js | JavaScript를 기반으로 만들어진 프레임워크로 비동기 입/출력 처리와 이벤트 위주의 높은 처리 성능을 갖고 있어 실시간으로 입/출력이 빈번한 애플리케이션에 적합하다. |
Django | Python을 기반으로 만들어진 프레임워크로 컴포넌트의 재사용과 플러그인화를 강조하여 신속한 개발이 가능하도록 지원한다. |
Codeigniter | PHP를 기반으로 만들어진 프레임워크로 인터페이스가 간편하며 서버 지원을 적게 사용한다. |
Ruby on Rails | Ruby를 기반으로 만들어진 프레임워크로 테스트를 위한 웹 서버를 지원하며 데이터베이스 작업을 단순화, 자동시켜 개발 코드의 길이가 짧아 신속한 개발이 가능하다. |
💡 서버 개발 프레임워크는 웹 프레임워크라고도 불리며, 이러한 프레임워크는 기능 구현을 위한 기본적인 형태를 지원할 뿐 필수적인 요소는 아니다. 하지만 사용 여부에 따라 생산성의 차이가 크다는 점을 기억해 두자.
💡 모델-뷰-컨트롤러(MVC) : 모델-뷰-컨트롤러는 시스템을 세 부분으로 분리하여 서로 영향 받지 않고 개발할 수 있는 디자인 패턴을 의미한다.
📌 서버 프로그램은 응용 소프트웨어와 동일하게 모듈 및 공통 모듈을 개발할 후, 모듈들을 통합하는 방식으로 구현된다.
💡 루틴(Routine) : 기능을 가진 명령들의 모임
💡 메인 루틴(Main Routine) : 프로그램 실행의 큰 줄기가 되는 것
💡 서브루틴(Subroutine) : 메인 루틴에 의해 필요할 때마다 호출되는 루틴
💡 결합도(Coupling) : 모듈 간에 상호 의존하는 정도 또는 두 모듈 사이의 연관 관계를 의미
💡 응집도(Cohesion) : 정보 은닉 개념을 확장한 것으로 명령어나 호출문 등 모듈의 내부 요소들의 서로 관련되어 있는 정도 즉 모듈이 독립적인 기능으로 정의되어 있는 정도를 의미
📌 [정보처리기사] 서버 프로그램 구현 - 보안 및 API/배치 프로그램/패키지 소프트웨어 (1) | 2024.02.26 |
---|---|
📌 [정보처리기사] SQL 활용 - ORM(Object-Relational Mapping)/쿼리 성능 최적화 (4) | 2024.02.26 |
📌 [정보처리기사] SQL 활용 - SQL 테스트 (0) | 2024.02.22 |
📌 SQL 활용 - 사용자 정의 함수/DBMS 접속 기술 (0) | 2024.02.22 |
📌 [정보처리기사] SQL 활용 - 프로시저(Procedure)/트리거(Trigger) (0) | 2024.02.21 |