개발햄비

[1과목]서버 프로그램 구현 본문

개발/개인공부

[1과목]서버 프로그램 구현

개발햄 2021. 12. 12. 20:00

1. 개발 환경 구축 개요


  • 프로젝트를 이해하고 소프트웨어 및 하드웨어 장비 구축
  • 개발환경은 운영환경과 비슷하게 구성
  • 분석 단계에서 개발에 필요한 하드웨어와 소프트웨어 선정

 

1-1. 하드웨어 환경  ( 클라이언트 + 서버)

  사용자와 인터페이스 역할을 하는 클라이언트와 , 클라이언트와 통신하여 서비스를 제공하는 서버

 

  • 웹 서버 ( Web Server)
  •  클라이언트에 직접 요청을 받아 처리하는 서버 , 저용량의 정적 파일 제공
  •  ex) Apache Http server , css , html 파일 등

 

  • 웹 애플리케이션 서버 ( WAS : Web Application Server )
  •  동적 서비스 제공, 데이터 가공 수행, 웹서버와 파일서버 사이에서 인터페이스 역할
  •  ex) Apache Tomcat 등

 

  • 데이터베이스 서버
  •  DB 이를 관리하는 DBMS를 운영하는 서버

 

  • 파일서버 
  •  DB에 저장하기엔 비효율적인 파일을 저장하고 관리하는 서버 
  •  ex) AWS S3

 

  • Web  Sever의 기능
  •  http / https 지원 : 브라우저로부터 요청받아 응답할 때 사용되는 프로토콜
  •  통신 기록 : 처리한 요청들을 로그 파일에 기록하는 기능
  •  정적 파일 관리 : HTML ,CSS , 이미지 등 정적 파일 관리 및 저장
  •  대역폭 제한 + 네트워크 트래픽 포화 방지를 위해 응답 속도 제한
  •  가상 호스팅 + 하나의 서버로 여러 개의 도메인 연결
  •  인증 : 합법적인 사용자인지 확인 

 

 

1-2 . 소프트웨어 환경 ( 시스템 소프트웨어 + 개발 소프트웨어 )

 운영체제 ( OS ) , web server와 WAS 운영을 위한 서버 프로그램 , DBMS 등

 

  • 요구사항 관리 도구 
  •   요구사항의 수집 분석 , 추적 등을 편리하게 도와주는 소프트웨어
  •   ex) JIRA 등

 

  • 설계 / 모델링 도구 
  •   UML 통합 모델링 언어를 지원

 

  • 구현 도구
  •   개발 언어를 통해 애플리케이션의 실제 구현을 지원
  •   ex) 이클립스 , VS code , 인텔리 등

 

  • 빌드 도구
  •   작성된 소스의 빌드 및 배포, 라이브러리 관리를 지원
  •   ex) Jenkins, Maven , Gradle

 

  • 테스트 도구 및 형상 관리 도구
  •   junit, git , SVN 등

 

1-3 개발 언어의 선정 기준

- 적정성 , 효율성 , 이식성 , 친밀성 ,범용성

 

 

1-4 서버 개발의 개요

- 웹 애플리케이션의 로직을 구현할 서버 프로그램을 제작하여  WAS에 탑재하는 것을 의미.

- WAS에 구현된 서버 프로그램은 웹서버로부터 받은 요청을 처리하여 결과 반환.

- 서버 개발에 사용되는 언어  JAVA, JS , python , php , 루비 등

 

1-5 서버 개발 프레임워크

 - 서버 개발 프레임워크에 따라 지원하는 프로그래밍 언어가 제한적, 이에 프레임워크도 제한적

 - 대부분 MVC 패턴 사용

 -  Spring , Node,  Django , Codeigniter , Ruby on rails 등

 

1-6 서버 프로그램 구현

 - 응용 소프트웨어와 동일하게 모듈 및 공통 모듈을 개발 후 모듈 통함

  * 모듈 : 캡슐화로 분리된 시스템의 각 기능들로 , 서브 루틴, 서브 시스템 , 소프트웨어 내의 프로그램 작업 단위 등과 같은 의미

 - 모듈 개발 시 기능적 독립성 고려 , 과도한 상호 작용 배제 

  * 독립성을 높이려면 , 결합도 Down  , 응집도 Up  , 모듈 크기 작게

 - 여러 프로그램에서 재사용할 수 있는 계산식 , 인증 등등

 

모듈화 : 캡슐화를 통해 구현 변경에 따른 영향 최소화

재사용성 : 재사용 가능한 모듈 제공 및 생산성 증대

확장성 : 다형성을 통해 인터페이스 확장

제어의 역 흐름 : 개발자가 관리하고 통제해야 하는 객체들의 제어를 프레임워크에 넘겨 생산성 증대.

 

1-7 소프트웨어 개발 보안 개요

 - 개발 과정에서 발생할 수 있는 보얀 취약점 최소화.

  • 데이터의 기밀성
  • 무결성
  • 가용성
  • 정부에서 제공하는 소프트웨어 개발 보안 가이드 참고

1-8 소프트웨어 개발 보안 점검 항목

 - 세션 통제 : 세션은 서버와 클라이언트를 연결, 세션의 연결 과정에서 발생하는 정보를 관리 

 - 입력 데이터 검증 및 표현 : 입력 데이터에 대한 유호성 검증 체계를 갖추고, 검증 실패 시 이에 대한 처리 구축

    ex) SQL문 삽입, 경로 조작 , 자원 삽입 , 크로스 사이트 스크립팅 (XSS) 등

 - 보안 기능 : 인증 , 접근 제어 , 기밀성, 암호화

 - 시간 및 상태 : 동시 수행하는 병렬 처리 시스템, 다수의 포로 세스 동작 시스템 

    검사시점과 사용 시점 ( TOCTOU) 경쟁조건 , 종료 안 하는 반복문, 재귀 함수 등

 - 에러 처리 : 오류 메시지를 통한 정보 노출 및 오류 상황 대응 부재 

 - 코드 오류 : 널 포인트 역참조, 부적절한 자원 해제 등

 - 캡슐화 : 세션에 의한 데이터 노출  및 디버그 코드 등 

 - API 오용 : DNS look up에 의한 보한 결점 , 취약  api 사용

 

 

1-9 배치 프로그램의 개요

 - 사용자와 상호 작용 없이 여러 작업을 미리 정해진 일련 순서에 일괄적으로 처리 

 - 정기 배치 : 일 , 주 ,월 같이 정해진 기간에 정기적 수행

 - 이벤트성 배치 : 특정 조건을 설정해두고 조건 충족 시 실행

 - on - Demand  배치 : 사용자 요청 시 수행

 

 

1-10 배치 프로그램의 필수 요소

- 대용량 데이터 : 대량의 데이터 조회, 전달, 처리가 가능해야 함

- 자동화: 오류를 제외하고 사용자 개입 없이 수행 가능해야 함

- 견고성 : 잘못된 데이터 및 데이터 중복 등이 발생해도 중단 되는 일 없이 수행

- 안정성 / 신뢰성 : 오류가 발생하는 위치 , 시간 등 추적이 가능해야 함

- 성능 : 다른 응용 프로그램의 수행을 방해하지 않고 지정된 시간에 처리를 완료해야 함

 

1-11 배치 스케줄러 ( Job 스케줄러)

- 일괄 처리 작업이 설정된 주기에 맞춰 자동으로 수행

- 스프링 배치 

   로그 관리, 추적 트랜잭션의 관리, 작업 처리 통계, 작업 재시작 등 다양한 기능 수행

    - job : 수행할 작업 정의

    - job Launcher : job처리를 위한 제어 정보

    - step : job처리를 위한 제어 정보

    - job Repository : step의 제어 정보를 포함하여 작업 실행을 위한 모든 정보 저장

 

 - Quartz

   스프링 프레임워크로 개발되는 응용 프로그램들의 일괄 처리를 위한 다양한 기능을 제공하는 오픈 소스 라이브러리

   수행할 작업과 수행 시간을 관리하는 요소들을 분리하여 일괄 처리 작업에 유연성 제공

    - Scheduler : 실행 환경 관리

    - job : 수행할 작업 정의

    - jobDetail : job의 상세 정보

    - Trigger : job의 실행 스케줄 정의

 

 

1-12 패키지 소프트웨어의 개요

 - 기업에서 일반적으로 사용하는 여러 기능들을 통합하여 제공

 - 기업 환경에 적합하게 커스텀마이징 하여 사용

 - 패키지 소프트웨어를 이용하여 시스템을 구축하는 방식을 패키지 개발 방식이라 함

 - 기능 요구 70% 이상 충족하는 패키지 소프트웨어 만을 사용

 

1-13 패키지 소프트웨어의 특징

 - 요구사항을 분석하여 업무 특성에 맞게 전용으로 개발되는 전용 개발 소프트웨어와 

    비교하여 안정성, 라이센스, 생산성 등 차이

 - 전문 업체에 의해 품질 검증, 국제 / 산업 표준 준수 -> 안정적 이용 가능

 - 라이센스가 판매자에게 있어 기능 추가 및 개발에 제약 발생

 - 개발 조직이 없어도 됨 ( 상시 운영 조직 ) , 비용절감, 프로젝트 기간 단축

 - 기존 시스템 상호 연결이 어려울 수도 있음

 - 결함 등 능동적인 대처 어려움

 

  패키지 소프트웨어 전용 개발 소프트 웨어
기능 요구 사항 70% 이상 요구 충족 시 사용 모든 요구사항 구현 가능
안정성 품질 검증 / 업계 표준 준용 개발자 역량에 따라 다름
라이센스 판매자 회사
생산성 시간 절약  개발에 대한 시간 필요
호환성 호환성 보장 안됨 설계 단계에서 고려하여 개발
유지보수 즉각적인 대응 어려움 즉각 대응 가능

   

 

 

 

  

'개발 > 개인공부' 카테고리의 다른 글

[1과목] 어플리케이션 설계  (0) 2022.02.06
[1과목] 화면 설계  (0) 2022.02.06
[1과목] 시스템 파악  (0) 2022.02.01
[1과목]소프트웨어 생명 주기 : 요구 사항 확인  (0) 2022.02.01