일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- CSS
- springboot
- 시스템 파악
- 스크럼기법
- Bandit Level 5
- 커맨드공부
- 클린코드
- 명령어공부
- vue
- 인증서만료에러
- was SQLRecoverableException
- avax.net.ssl.SSLHandshakeException:
- 나선형 모형
- pl/sql
- 프로토타입 모형
- OpenAPI
- Bandit Level 6 → Level 7
- java.sql.SQLRecoverableException
- Bandit Level 6
- was버그
- 폭포수 모형
- 에자일 모형
- SQLRecoverableException
- 시스템 파악 정리
- Law of Demeter
- 디미터 법칙
- table scan
- 변수명 짓는법
- plsql
- mysql 튜닝
- Today
- Total
개발햄비
[1과목]서버 프로그램 구현 본문
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 |