반응형

     정보

    • 업무명     : 정보처리기사 실기 : 12강 서버 프로그램 구현 (배치 프로그램 구현하기)

    • 작성자     : 이상호

    • 작성일     : 2020-05-10

    • 설   명      :

    • 수정이력 :

     

     

     내용

    [배치 프로그램 구현]

    [1] 배치 프로그램의 이해
    • 1. 배치 프로그램의 개념 

       

      • 배치 프로그램이란 사용자와의 상호 작용 없이 일련의 작업들을 작업 단위로 묶어 정기적 으로 반복 수행하거나 정해진 규칙에 따라 일괄 처리하는 것이다.

     

    • 2. 배치 프로그램의 필수 요소

       

      • 대용량 데이터 

         

        • 대용량의 데이터를 처리할 수 있어야 한다. 

           

      • 자동화 

         

        • 심각한 오류 상황 외에는 사용자의 개입 없이 동작해야 한다. 

           

      • 견고함 

         

        • 유효하지 않은 데이터의 경우도 처리해서 비정상적인 동작 중단이 발생하지 않아야 한다. 

           

      • 안정성 

         

        • 어떤 문제가 생겼는지, 언제 발생했는지 등을 추적할 수 있어야 한다. 

           

      • 성능 

         

        • 주어진 시간 내에 처리를 완료할 수 있어야 하고, 동시에 동작하고 있는 다른 애플리케이션을 방해하지 말아야 한다.

     

    [2] 배치 스케줄러(Scheduler)
    • 1. 배치 스케줄러의 개념 

       

      • 배치 스케줄러는 일괄 처리(Batch Processing)를 위해 주기적으로 발생하거나 반복적으로 발생하는 작업을 지원하는 도구이다. 

     

    • 2. 배치 스케줄러의 종류 

       

      • (1) 스프링 배치(Spring Batch) 

         

        • 스프링 배치는 Spring Source사와 Accenture사의 공동 작업으로 2007년에 탄생한 배치 기반 오픈소스프레임워크이다.

        • (가) 스프링 배치(Spring Batch)의 핵심 컴포넌트

     

    • (나) 스프링 배치(Spring Batch)의 핵심 기능

       

      • 스프링 프레임워크 기반 

         

      • 스프링의 DI, AOP 및 다양한 엔터프라이즈 지원 기능을 사용한다. 

         

      • 자체 제공 컴포넌트 

         

      • 배치 처리(데이터베이스나 파일로부터 데이터를 읽거나 쓰는 등) 시 공통적으로 필요한 컴포넌트를 제공한다. 

         

      • 견고함과 안정성 

         

      • 선언적 생략과 처리 실패 후 재시도 설정을 제공한다.

     

    • (2) Quartz 스케줄러(Scheduler) 

       

      • Quartz 스케줄러란 Spring Framework에 플러그인(Plug-in)되어 수행하는 Job과 실행 스케줄을 정의하는 Trigger를 분리하여 유연성을 제공하는 오픈소스 스케줄러이다.

         

        • (가) Quartz 스케줄러의 구성 요소

           

          • Scheduler 

             

            • Quartz 실행환경을 관리하는 핵심 개체이다. 

               

          • Job 

             

            • 사용자가 수행할 작업을 정의하는 인터페이스로서 Trigger 개체를 이용하여 스케줄할 수 있다. 

               

          • JobDetail 

             

            • 작업명과 작업 그룹과 같은 수행할 Job에 대한 상세 정보 를 정의하는 개체이다. 

               

          • Trigger 

             

            • 정의한 Job 개체의 실행 스케줄을 정의하는 개체로서 Scheduler 개체에게 Job 수행 시점을 알려 주는 개체이다.

        • (나) Quartz 스케줄러의 사용 예제

     

    [수행]

    [1] 애플리케이션 설계를 기반으로 배치 프로그램을 확인한다.
    • 1. 프로그램 관리 대장을 확인한다. 

       

      • 아래 예시는 이순신 담당자가 구현해야 할 배치 기능을 확인한 예시이다.

     

    • 2. 배치 설계서를 확인한다. 

       

      • 프로그램 관리 대장의 ID와 일치하는 배치 설계를 확인한다. 

     

    [2] 애플리케이션 설계를 기반으로 배치 프로그램을 구현한다.
    • 1. 배치 프로그램을 구현하기 위한 SQL을 작성한다. 

       

      • 업무 종료가 된 사용자 정보를 조회 및 삭제하는 SQL 구문이다

     

    • 2. 배치 프로그램을 구현하기 위한 I/O 오브젝트(DTO/VO)를 정의한다.

     

    • 3. 배치 프로그램을 구현하기 위한 데이터 접근 오브젝트(DAO)를 작성한다

     

    • 4. 배치 프로그램을 구현하기 위한 스케줄러 클래스를 작성한다.

     

     

    [배치 프로그램 테스트]

    [1] 디버그(Debug)와 디버거(Debugger)
    • 1. 디버그(Debug)의 개념 

       

      • 디버그(Debug) 또는 디버깅(Debugging)은 컴퓨터 프로그램의 논리적인 오류(Bug)를 찾아내 는 과정을 말한다. 

     

    • 2. 디버거(Debugger)의 개념 

       

      • 디버거는 디버그를 돕는 도구이다. 디버거는 디버깅을 하려는 코드에 중단점을 지정하여 프로그램 실행을 중단하고, 코드를 단계적으로 실행하여 저장된 값을 확인 할 수 있도록 지원한다.

     

    [1] 디버거(Debugger) 사용법
    • 1. 디버그 뷰(Debug View)

     

    • 2. 중단점(Break Pointer) 설정 

       

      • 편집기 왼쪽에 파란 부분(마커바)을 더블 클릭하거나 해당 위치에서 마우스 오른쪽을 클릭하여 `Toggle Breakpoint'를 선택한다

     

    • 3. 디버그 모드(Debug Mode)에서의 스텝(Step) 단위 진행 

       

      • (1) 디버그 모드로 실행 중 지정된 중단점에 오면 디버거에 의해 중단되고 라인 단위로 실행이 가능해진다.

     

    • (2) 디버그 뷰 버튼 사용법은 함수(Method) 안으로 진입하는 Step into, 함수 안으로 진 입하지 않는 Step Over 등의 기능으로 스텝 단위로 디버깅을 한다

     

    [수행]

    [1] 배치 프로그램 주기를 변경한다.
    • 배치 스케줄(Schedule) 주기를 테스트가 가능한 주기로 변경하여 로그에 정상적으로 출력 되는지 확인한다. [그림 4-12] 배치 스케줄 주기가 변경된 스케줄러 클래스 구문 예시 위 예시는 테스트를 위해 @Scheduled 어노테이션(Annotation) 구문 지정으로 10초 주기로 배치 스케줄이 실행되게 구현한 예시이다.

     

    [2] 배치 프로그램을 디버깅하여 정상적으로 동작하는지 검증한다.
    • 배치 프로그램은 목표 시스템의 품질에 영향도가 높은 작업이므로 디버깅(Debugging)을 통 해 구문 확인이 필요하다. 

       

    • 1. 디버그 모드(Debug Mode)로 실행한다. 아래 예시는 디버그 모드로 실행하기 위해 붉은색 디버그 아이콘을 실행하는 예시이다

     

    2. 검증할 코드 라인에 중단점(Break Point)를 지정하여 코드를 검증한다.

     

    • [3] 배치 프로그램의 로그를 확인한다.

     

    [4] 목적 테이블에서 정상적으로 배치 프로그램이 실행되었는지 확인한다.
    • 1. 배치 프로그램을 실행하기 전 데이터를 확인한다.

     

    • 2. 배치 프로그램을 실행하였을 경우의 대상 데이터를 확인한다. 

       

      • 아래 예시는 업무 종료된 사용자 정보를 삭제하는 경우이다

     

    • 3. 배치 프로그램을 실행한 후의 데이터를 확인한다.

     

    [5] 배치 프로그램이 정상적으로 실행되지 않았을 경우 오류를 확인한다.
    • 1. 데이터가 목적에 맞지 않게 처리된 경우는 참조 테이블의 데이터를 확인하여 오류를 확인한다. 

       

    • 2. 로그에 실패가 출력된 경우 디버깅을 통해 오류를 확인한다.

     

    [연습문제]

    • 배치 프로그램의 필수 요소에 대해 잘못 설명한 것은?

       

      • 대용량 데이터 :대용량의 데이터를 처리할 수 있어야 한다. 

         

      • 견고함 :심각한 오류 상황 외에는 사용자의 개입 없이 동작해야 한다. 

         

      • 안정성 :어떤 문제가 생겼는지, 언제 발생했는지 등을 추적할 수 있어야 한다. 

         

      • 성능 :주어진 시간 내에 처리를 완료할 수 있어야 하고, 동시에 동작하고 있는 다른 애플리케이션을 방해하지 말아야 한다.

     

    • 스프링 배치는 Spring Source사와 Accenture사의 공동 작업으로 2007년에 탄생한 배치 기반 오픈소스프레임워크이다.  핵심기능이 아닌것은?

       

      • 스프링 프레임워크 기반 

         

      • 자체 제공 컴포넌트 

         

      • 견고함과 안정성 

         

      • 자동화

     

     참고 문헌

    [논문]

    • 없음

    [보고서]

    • 없음

    [URL]

    • 없음

     

     문의사항

    [기상학/프로그래밍 언어]

    • sangho.lee.1990@gmail.com

    [해양학/천문학/빅데이터]

    • saimang0804@gmail.com

     

     

     

     

     

     

     

     

     

     

     

    본 블로그는 파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음
    반응형
    • 네이버 블러그 공유하기
    • 네이버 밴드에 공유하기
    • 페이스북 공유하기
    • 카카오스토리 공유하기