Certificate/정보처리기사

[4과목 프로그래밍 언어 활용] 서버 프로그램 구현 - 127. 개발 환경 구축 ~ 128. 서버 개발

S_sun 2025. 11. 20. 09:48

1. 개발 환경 구축

  • 응용 소프트웨어 개발을 위해 개발 프로젝트를 이해하고 소프트웨어 및 하드웨어 장비를 구죽하는 것
  • 운영될 환경과 유사한 구조로 구축
  • 분석 단계의 산출물을 바탕으로 개발에 필요한 하드웨어와 소프트웨어 선정
  • 하드웨어와 소프트웨어의 성능, 편의성, 라이선스 등의 비즈니스 환경에 적합한 제품들을 최종적으로 결정하여 구축

1) 하드웨어 환경

  • 사용자와의 인터페이스 역할을 하는 클라이언트(Client), 클라이언트와 통신하여 서비스를 제공하는 서버(Server)로 구성
  • 클라이언트에는 PC, 스마트폰 등
  • 서버는 사용 목적에 따라 웹서버, 웹 애플리케이션, 데이터베이스 서버, 파일 서버 등으로 나뉨
    • 웹 서버(Web Server)
      • 클라이언트로부터 직접 요청을 받아 처리하는 서버
      • 저용량의 정적 파일 제공
      • ex) Apache HTTP Server, Microsoft Internet Information Service, Google Web Server
    • 웹 애플리케이션 서버(WAS; Web Application Server)
      • 사용자에게 동적 서비스를 제공하기 위해 웹 서버로부터 요청을 받아 데이터 가공 작업을 수행하거나, 웹 서버와 데이터베이스 서버 또는 웹 서버와 파일 서버 아이에서 인터페이스 역할을 수행하는 서버
      • ex) Apache Tomcat, IBM WebSphere, Oracle WebLogic
    • 데이터베이스 서버(DB Server)
      • 데이터베이스와 이를 관리하는 DBMS를 운영하는 서버
      • MySQL Server, Oracle Server, Microsoft SQL Server
    • 파일 서버(File Server)
      • 데이터베이스에 저장하기에 비효율적이나 서비스 제공을 목적으로 유지하는 파일들을 저장하는 서버
      • ex) AWS S3

💡 웹 서버의 기능

기능 설명
HTTP/HTTPS 지원 브라우저로부터 요청을 받아 응답할 때 사용되는 프로토콜
통신 기록
(Communication Log)
처리한 요청등을 로그 파일로 기록하는 기능
정적 파일 관리
(Managing Static Files)
HTML, CSS, 이미지 등의 정적 파일들을 저장하고 관리하는 기능
대역폭 제한
(Bandwidth Throtting)
네트워크 트래픽의 포화를 방지하기 위해 응답 속도를 제한하는 기능
가상 호스팅
(Virtual Hosting)
하나의 서버로 여러 개의 도메인 이름을 연결하는 기능
인증
(Authentication)
사용자가 합법적인 사용자인지를 확인하는 기능

 

2) 소프트웨어 환경

  • 클라이언트와 서버 운영을 위한 시스템 소프트웨어와 개발에 사용되는 개발 소프트웨어로 구성
  • 시스템 소프트웨어
    • 운영체제(OS), 웹 서버 및 WAS 운용을 위한 서버 프로그램, DBMS
  • 개발 소프트웨어
    • 요구사항 관리 도구
      • 요구사항의 수집과 분석, 추적 등을 편리하게 도와주는 소프트웨어
      • ex) JIRA, IBM DOORS, inteGREAT, Reqtify, Trello
    • 설계/모델링 도구
      • UML(통합 모델링 언어)를 지원하며, 개발의 전 과정에서 설계 및 모델링을 도와주는 소프트웨어
      • ex) DB Designer, PlantUML, ArgoUML
    • 구현 도구
      • 개발 언어를 통해 애플리케이션의 실제 구형을 지원하는 소프트웨어
      • ex) Eclipse, IntelliJ IDEA, Visual Studio, Netbeans, Node.js
    • 빌드 도구
      • 구현 도구를 통해 작성된 소스의 빌드 및 배포, 라이브러리 관리를 지원하는 소프트웨어
      • ex) Ant, Gradle, Maven, Jenkins
    • 테스트 도구
      • 모듈들이 요구사항에 적합하게 구현되었는지 테스트하는 소프트웨어
      • CppUnit, JUnit, HttpUnit, NUnit, SpringTest
    • 형상관리 도구
      • 산출물들을 버전별로 관리하여 품질 향상을 지원하는 소프트웨어
      • ex) GIT, CVS, Subversion, Mercurial

💡 개발 언어 선정 기준

기준 설명
적정성 개발하려는 소프트웨어의 목적에 적합해야 함
효율성 코드의 작성 및 구현이 효율적이어야 함
이식성 다양한 시스템 및 환경에 적용이 가능해야 함
친밀성 개발 언어에 대한 개발자들의 이해도와 활용도가 높아야 함
범용성 다른 개발 사례가 존재하고 여러 분야에서 활용되고 있어야 함

 

2. 서버 개발

  • 웹 애플리케이션의 로직을 구현할 서버 프로그램을 제작하여 WAS에 탑재하는 것을 의미
  • WAS에 구현된 서버 프로그램은 웹 서버로부터 받은 요청을 처리하여 결과를 반환하는 역할을 수행
  • Java, JS, Python, PHP, Ruby 등
  • 해당 언어로 서버 프로그램을 개발할 수 있도록 지원하는 프레임워크가 존재

1) 서버 개발 프레임워크

  • 개발 시 다양한 네트워크 설정, 요청 및 응답 처리, 아키텍처 모델 구현 등 손쉽게 처리할 수 있도록 클래스나 인터페이스를 제공하는 소프트웨어
  • Spring
    • JAVA를 기반으로 만들어진 프레임워크
    • 전자정부 표준 프레임워크의 기반 기술로 사용
  • Node.js
    • JavaScript를 기반으로 만들어진 프레임워크
    • 비동기 입 · 출력 처리와 이벤트 위주의 높은 처리 성능을 갖고 있음
    • 실시간 입 · 출력이 빈번한 애플리케이션에 적합
  • Django
    • Python을 기반으로 만들어진 프레임워크
    • 컴포넌트의 재사용과 플러그인화를 강조하여 신속한 개발이 가능하도록 지원
  • Codeigniter
    • PHP를 기반으로 반들어진 프레임워크
    • 인터페이스가 간편하며 서버 자원을 적게 사용
  • Ruby on Rails
    • Ruby 기반으로 만들어진 프레임워크
    • 테스트를 위한 웹 서버를 지원
    • 데이터베이스 작업 단순화, 자동화시켜 개발 코드의 길이가 짧아 신속한 개발 가능

2) 서버 프로그램 구현

  • 모듈 및 공통 모듈을 개발한 후, 모듈들을 통합하는 방식으로 구현
  • 모듈 개발 시 기능적 독립성을 고려하여 다른 모듈과의 과도한 상호작용을 배제함으로써 특정 모듈의 수정이 다른 모듈들에게 영향을 미치지 않아야 함
  • 모듈의 독립성을 높이려면 모듈의 결합도를 약하게, 응집도는 강하게 하여 모듈의 크기를 작게 만들어야 함
  • 공통 모듈은 재상용할 수 있는 모듈을 의미
    • 자주 사용되는 계산식이나 매번 필요한 사용자 인증 같은 기능들

 

 

 

📖 Reference
 

2023 시나공 정보처리기사 필기 : 네이버 도서

네이버 도서 상세정보를 제공합니다.

search.shopping.naver.com

 

728x90
반응형