※ 공부 내용의 복습 개념으로 정리된 글입니다. - 출처 시나공
서버 개발의 개요
서버 개발은 웹 애플리케이션의 로직을 구현할 서버 프로그램을 제작하여 웹 애플리케이션 서버(WAS)에 탑재하는 것을 의미합니다.
- 웹 애플리케이션 서버에 구현된 서버 프로그램은 웹 서버로부터 받은 요청을 처리하여 결과를 반환하는 역할을 수행합니다.
- 서버 개발에 사용되는 프로그래밍 언어에는 Java, JavaScript, Python, PHP, Rudy 등이 있습니다.
- 각 프로그래밍 언어에는 해당 언어로 서버 프로그램을 개발할 수 있도록 지원하는 프레임워크가 있습니다.
※ 프레임워크(Framework)
프레임워크는 사전적으로 '뼈대', '골조'를 의미하는데, 소프트웨어에 서는 특정 기능을 수행하기 위해 필요한 클래스나 인터페이스 등을 모아둔 집합체를 말합니다.
서버 개발 프레임워크
서버 개발 프레임워크는 서버 프로그램 개발 시 다양한 네트워크 설정, 요청 및 응답 처리, 아키텍처 모델 구현 등을 손쉽게 처리할 수 있도록 클래스나 인터페이스를 제공하는 소프트웨어를 의미합니다.
- 서버 개발 프레임워크에 따라 지원하는 프로그래밍 언어가 제한적이므로 선정할 수 있는 프레임워크도 제한적입니다.
- 서버 개발 프레임워크의 대부분은 모델-뷰-컨트롤러(MVC) 패턴을 기반으로 개발되었습니다.
대표적인 서버 개발 프레임워크의 종류
- Spring
- JAVA를 기반으로 만들어진 프레임워크로, 전자정부 표준 프레임워크의 기반 기술로 사용되고 있습니다.
- Node.js
- JavaScript를 기반으로 만들어진 프레임워크로, 비동기 입 · 출력 처리와 이벤트 위주의 높은 처리 성능을 갖고 있어 실시가능로 입 · 출력이 번번한 애플리케이션에 적합합니다.
- Django
- Python을 기반으로 만들어진 프레임워크로, 컴포넌트의 재사용과 플러그인화를 강조하여 신속한 개발이 가능하도록 지원합니다.
- Goodeigniter
- PHP를 기반으로 만들어진 프레임워크로, 인터페이스가 간편하며 서버 지원을 적게 사용합니다.
- Ruby on Rails
- Ruby를 기반으로 만들어진 프레임워크로, 테스트를 위한 웹 서버를 지원하며 데이터 베이스 작업을 단순화, 자동화시켜 개발 코드의 길이가 짧아 신속한 개발이 가능합니다.
※ 플러그인화
플러그인화는 재사용과 비슷한 의미로 전원 플러그처럼 마음대로 껐다 뺏다할 수 있다는 것을 의미합니다.
서버 프로그램 구현
서버 프로그램은 응용 소프트웨어와 동일하게 모듈 및 공통 모듈을 개발한 후, 모듈들을 통합하는 방식으로 구현합니다.
- 모듈은 모듈화를 통해 분리된 시스템의 각 기능들로, 서브 루틴, 서브시스템, 소프트웨어 내의 프로그램, 작업 단위 등과 같은 의미로 사용합니다.
- 모듈 개발 시 기능적 독립성을 고려하여 다른 모듈과의 과도한 상호작용을 배제함으로써 특정 모듈의 수정이 다른 모듈들에게 영향을 미치지 않아야 합니다.
- 모듈의 독립성은 결합도(Coupling)와 응집도(Cohesion)에 의해 측정되며, 독립성을 높이려면 모듈의 결합도를 약하게 하고 응집도를 강하게 하며 모듈의 크기를 작게 만들어야 합니다.
- 공통 모듈은 여러 프로그램에서 재사용(Reuse)할 수 있는 모듈을 의미하며, 자주 사용되는 계산식이나 매번 필요한 사용자 인증 같은 기능들이 공통 모듈로 구성될 수 있습니다.
프레임워크의 특성
- 모듈화(Modularity)
- 프레임워크는 캡슐화를 통해 모듈화를 강화하고 설계 및 구현의 변경에 따른 영향을 최소화함으로써 소프트웨어의 품질을 향상시킵니다.
- 프레임워크는 개발표준에 의한 모듈화로 인해 유지 보수가 용이합니다.
- 재사용성(Reusability)
- 프레임워크는 재사용 가능한 모듈들을 제공함으로써 예산 절감, 생산성 향상, 품질 보증이 가능합니다.
- 확장성(Extensibility)
- 프레임워크는 다형성(Polymorphism)을 통한 인터페이스 확장이 가능하여 다양한 형태와 기능을 가진 애플리케이션 개발이 가능합니다.
- 제어의 역흐름(Inversion of Control)
- 개발자가 관리하고 통제해야 하는 객체들의 제어를 프레임워크에 넘김으로써 생산성을 향상시킵니다.
※ 루틴(Routine)
기능을 가진 명령들의 모임
※ 메인 루틴(Main Routine)
프로그램 실행의 큰 줄기가 되는 것
※ 서브 루틴(Subroutine)
메인 루틴에 의해 필요한 때마다 호출되는 루틴
※ 결합도(Coupling)
모듈 간에 상호 의존하는 정도 또는 두 모듈사이의 연관 관계를 의미합니다.
※ 응집도(Cohesion)
정보 은닉 개념을 확장한 것으로, 명령어나 호출문 등 모듈의 내부 요소들의 서로 관려되어 있는 정도, 즉 모듈이 독립적인 기능으로 정의 되어 있는 정도를 의미합니다.
※ 재사용(Reuse)
재사용은 이미 개발된 기능들을 파악하고 재구성하여 새로운 시스템 또는 기능 개발에 사용하기 적합하도록 최적화 시키는 작업입니다.
'정보처리산업기사' 카테고리의 다른 글
정보처리산업기사 - 프로그래램 구현 - 공통 모듈 (2) | 2024.09.02 |
---|---|
정보처리산업기사 - 프로그래램 구현 - 모듈 (4) | 2024.09.01 |
정보처리산업기사 - 프로그래램 구현 - 개발 환경 구축 (2) | 2024.08.30 |
정보처리산업기사 - 프로그래밍 언어 활용 - 프로토타입 (0) | 2024.08.29 |
정보처리산업기사 - 프로그래밍 언어 활용 - 예외 처리 (0) | 2024.08.28 |