응용 소프트웨어 개발을 위해 개발 프로젝트를 이해하고 소프트웨어 및 하드웨어 장비를 구축하는 것
응용 SW가 운영될 환경과 유사한 구조로 구축
개발에 필요한 하드웨어와 소프트웨어 선정
환경에 적합한 제품들을 최종적으로 결정해 구축
웹서버의 기능
HTTP/HTTPS 지원 - 요청을 받아 응답할 때 사용되는 프로토콜
통신기록 - 처리한 요청들을 로그파일로 기록하는 기능
정적 파일 관리 - 정적 파일들을 저장하고 관리하는 기능
대역폭 제한 - 응답속도를 제한
가상호스팅 - 하나의 서버로 여러개의 도메인 이름을 연결하는 기능
인증 - 사용자가 합법적인 사용자인지를 확인하는 기능
개발언어의 선정기준 : 적합성, 효율성, 이식성, 친밀성, 범용성
모듈화를 통해 분리된 시스템의 각 기능들, 단독 컴파일이 가능하고 재사용 가능
독립성이 높을 수록 모듈 수정시 다른 모듈에세 영향 X, 오류가 발생해도 쉽게 해결
모듈의 독립성은 결합도(Coupling)와 응집도(Cohesion)에 의해 측정
독립성을 높이려면 모듈의 결합도는 약하게, 응집도는 강하게, 모듈의 크기는 작게 만들어야 함
결합도 (강한 순서대로, 외워야 할 것 알아서 적기)
내용 - 공통 - 외부 - 제어 - 스탬프 - 자료
응집도 (강한 순서대로, 외워야 할 것 알아서 적기)
기능적 - 순차적 - 교환적 - 절차적 - 시간적 - 논리적 - 우연적
사용자가 데이터를 사용하기 위해 응용 시스템을 이용하여 DBMS에 접근하는 것을 의미
웹 응용 프로그램 - 웹 서버 - WAS - DBMS
DBMS 접속 기술
DBMS에 접속하기 위해 사용하는 API 또는 API의 사용을 편리하게 도와주는 프레임워크 등을 의미
1) JDBC - java언어로 다양한 종류의 db에 접속하고 sql문을 수행하는 표준 API, 접속하려는 DBMS 드라이버 필요
2) ODBS - DB에 접근하기 위한 표준 개방형 API로 개발 언어에 관계 없이 사용 가능
3) My Batis - JDBC 코드를 단순화 하여 사용할 수 있는 SQL Mapping기반 오픈 소스 접속 프레임워크
SQL 문장을 분리해 XAML파일을 만들고 Mapping을 통해 SQL을 실행
동적 SQL
다양한 조건에 따라 SQL 구문을 동적으로 변경하여 처리할 수 있는 SQL처리방식
사용자로부터 SQL문의 일부 또는 전부를 입력받아 실행할 수 있음
값이 입력되지 않을 경우 사용하는 NVL 함수를 사용할 필요가 없음
정적에 비해 속도가 느리지만 상황에 따하 다양한 조건을 첨가 가능해 유연한 개발이 가능
정적 SQL vs 동적 SQL (표 그려보기)
DTO/Vo, SQL, DAO, Service, Controller를 각각 구현하는 과정을 통해 이루어진다.
구현 순서는 개발자가 임의로 변경할 수 있다.
개발하려는 서버 프로그램의 목적, 개발언어, 규모 등의 이유로 통합되거나 세분화될 수 있음
소프트웨어 개발 보안가이드를 참고
(코드 참고 하기 .. ㅠ)
각 구성요소의 진행과정 (그려보고 적기 p492)
사용자와의 상호작용 없이 여러작업들을 미리 정해진 일련의 순서에 따라 일괄적으로 처리하는 것
정기배치 - 정기적으로 수행 / 이벤트성 배치 - 조건 충족 시 수행 / On-Demand 배치 - 사용자 요청 시 수행
배치 프로그램이 갖춰야 할 필수요소
대용량 데이터, 자동화, 견고성, 안정성/신뢰성, 성능
스프링 배치
스프링 프레임워크의 특성을 가져와 스프링이 가지고 있는 다양한 기능들을 모두 사용 가능
DB나 파일의 데이터를 교환하는데 필요한 컴포넌트들을 제공
Job - 수행할 작업 정의
Job Launcher - 실행을 위한 인터페이스
Step - Job처리를 위한 제어정보
Job Responsitory - Step의 제어 정보를 포함하여 작업 실행을 위한 모든 정보 저장
Quartz
스프링 프레임워크로 개발되는 응용 프래그램들의 일괄처리를 위한 다양한 기능을 제공하는 오픈소스 라이브러리
수행할 작업과 수행시간을 관리하는 요소들을 분리하여 일괄처리 작업에 유연성 제공
Scheduller - 실행 환경 관리
Job - 수행할 작업 정의
JobDetail - Job의 상세정보
Trigger - Job의 실행 스케줄 정의
Cron
리눅스의 스케줄러 도구
-e : 편집기를 호출하여 작업 추가 및 수정
-l : 작업목록 출력
-r : 작업 삭제