본문 바로가기
정보처리기사

[정보처리기사 실기] 13. 배치프로그램 구현 - 1과목 소프트웨어 구축

by 공불러 2024. 3. 24.
728x90
반응형

[정보처리기사 실기] 배치프로그램 구현 - 1과목 소프트웨어 구축

이번 배치 프로그램에 대한 내용보단 12과목의 MVC 모델,. OWASP, 시큐어 코딩이 더 중요할 수 있습니다. 배치 프로그램 중에서는 크론탭( Crontab)의 계산방법과 항목, 허용 특수기호의 의미를 확인해보시기 바랍니다.

목차

    배치프로그램

    배치프로그램은 실시간 처리와 대조되는 개념으로, 대량의 작업을 일괄적으로 처리하는 과정을 의미합니다. 이러한 작업들은 컴퓨터의 흐름에 따라 순차적으로 실행됩니다. 여러 작업이나 프로세스를 미리 정의된 일련의 절차에 따라 실행하고, 결과를 나중에 한꺼번에 처리하는 방식입니다.

    이러한 처리 방식은 일반적으로 다음과 같은 특징을 갖습니다:

    1. 대량의 데이터 처리: 대용량의 데이터나 일괄적인 작업을 처리하는 데 적합합니다. 여러 작업이 모여 큰 작업 단위를 형성하며, 이를 한꺼번에 처리합니다.
    2. 사전 정의된 일련의 절차: 처리해야 할 작업들은 미리 정의된 프로세스나 절차에 따라 실행됩니다. 이는 자동화된 시스템에서 반복적인 작업을 효율적으로 처리할 수 있도록 합니다.
    3. 비교적 오랜 시간이 소요될 수 있음: 대량의 데이터나 작업을 처리하기 때문에, 결과를 얻는 데 시간이 오래 걸릴 수 있습니다. 이러한 작업들은 보통 실시간으로 바로 처리되지 않고, 일정한 주기나 시간대에 실행됩니다.
    4. 자동화 및 예약 실행: 배치프로그램은 자동화되어 있어서, 사용자의 개입 없이 실행될 수 있습니다. 또한 작업을 특정 시간에 예약하여 실행할 수 있습니다.

     

    배치 프로그램 필수요소

    대용량 데이터

    자동화

    겸고함

    안정성

    성능

    필수 요소 설명
    대용량 데이터 배치 프로그램은 대량의 데이터를 처리하기 위한 목적으로 사용됩니다.

    데이터베이스, 파일 시스템 등에서 발생하는 많은 양의 데이터를 효율적으로 처리할 수 있어야 합니다.
    자동화 배치 프로그램은 자동화되어야 합니다.

    사용자의 개입 없이 예약된 시간에 실행되거나, 특정 이벤트에 반응하여 실행되어야 합니다.
    겸고함 배치 프로그램은 다양한 환경에서 동작할 수 있어야 합니다.

    다양한 운영 체제나 하드웨어 환경에서 실행될 수 있어야 하며, 다양한 데이터 형식을 처리할 수 있어야 합니다.
    안정성 배치 프로그램은 안정적이어야 합니다.

    예상치 못한 오류나 예외 상황이 발생해도 시스템이 중단되지 않고 계속해서 작업을 수행할 수 있어야 합니다.
    성능 배치 프로그램은 높은 성능을 가져야 합니다.

    대량의 데이터를 효율적으로 처리하고, 일정 시간 내에 작업을 완료할 수 있어야 합니다.

    스케쥴 관리 종류

    크론탭(Crontab)

    • 사용 환경: 주로 UNIX 및 Linux 계열의 운영 체제에서 사용됩니다.
    • 형식: 다음과 같이 분, 시, 일, 월, 요일 등을 지정하여 명령어를 실행할 시간을 설정합니다.
    • 분 시 일 월 요일(0이 일요일) 명령어
    • 필드: 분, 시, 일, 월, 요일에 대한 필드가 있으며, 각각의 필드는 특정 의미와 범위를 가지고 있습니다.
    • 허용 특수 문자: *, ?, -, ,, / 등의 특수 문자를 사용하여 시간을 지정할 수 있습니다.
      특수 문자 설명
      * 모든 값에 대응
      ? 특정 필드에 값을 지정하지 않음
      - 범위를 나타냄
      , 여러 값을 지정
         
      / 간격을 나타냄

     

    매일 오전 2시에 데이터베이스 백업을 실행하는 Crontab

    요일 명령어
    0  2  * * *  /usr/bin/backup_script.sh

    Spring Batch

    • 사용 환경: 주로 백엔드에서 대용량 데이터 처리를 위한 배치 작업을 관리하는 데 사용됩니다.
    • 특징: Spring Batch는 Java 기반의 배치 프레임워크로, 대용량 데이터 처리를 위한 기능을 제공합니다. 복잡한 배치 작업을 단순화하고, 재시작, 건너뛰기, 롤백 등의 기능을 제공하여 안정적인 배치 처리를 지원합니다.

    Quarts Job Scheduler

    • 사용 환경: Quartz Job Scheduler는 Quartz의 이전 버전이며, Java 기반의 오픈 소스 스케줄러입니다.
    • 특징: Quartz Job Scheduler는 Quartz와 매우 유사한 기능을 제공하지만, 이전 버전의 특징과 API를 가지고 있습니다. 따라서 Quartz Job Scheduler는 오래된 시스템이나 레거시 애플리케이션에서 여전히 사용되는 경우가 있습니다.
    • 매월 1일에 재고 데이터 업데이트
      • Quartz Job: StockUpdateJob
      • 스케줄링: 매월 1일 오전 0시 0분 0초에 실행

     

    숫자 의미 범위
    0 0-59
    0 0-59
    0 시간 0-23
    1 1
    * 1-12
    * 요일 0-7

    배치 스케쥴러 클래스 작성

    배치설계서 확인

    DTO/VO 구현

    SQL문 구현

    DAO 구현

    기능 클래스 작성할 내용
    배치 스케줄러 클래스 BatchScheduler 스케줄링 로직을 포함한 배치 작업을 실행하는 클래스를 작성합니다.
    - 스케줄링된 작업을 설정하고 실행하는 메서드를 포함합니다.
    - Quartz 또는 Spring Batch와 같은 라이브러리를 사용하여 스케줄링된 작업을 처리합니다.
    - 스케줄링된 작업에 대한 설정(실행 주기, 재시작 정책 등)을 관리합니다.
    DTO/VO 구현 BatchJobDTO / BatchJobVO 배치 작업에 필요한 데이터를 전달하기 위한 DTO(Data Transfer Object) 또는 VO(Value Object) 클래스를 작성합니다.
    - 배치 작업에 필요한 필드들을 정의합니다.
    - 필요한 경우, getter와 setter 메서드를 포함합니다.
    SQL문 구현 BatchSQL 데이터베이스에서 배치 작업을 수행하기 위한 SQL 문을 작성합니다.
    - 배치 작업에 필요한 데이터를 검색하거나 조작하기 위한 SQL 문을 작성합니다.
    - INSERT, UPDATE, DELETE 등의 DML(Data Manipulation Language) 문을 포함합니다.
    - 필요한 경우, 매개변수화된 쿼리(Parameterized Query)를 사용하여 보안을 강화합니다.
    DAO 구현 BatchJobDAO 데이터베이스와의 상호작용을 담당하는 DAO(Data Access Object) 클래스를 작성합니다.
    - 데이터베이스에 접근하여 SQL문을 실행하는 메서드를 포함합니다.
    - SQL문 실행 결과를 DTO/VO 객체에 매핑하여 반환하거나, 작업의 성공 여부를 반환합니다.
    - 필요한 경우, 트랜잭션 처리 및 예외 처리를 포함하여 안전한 데이터베이스 접근을 보장합니다.

     

    728x90
    반응형

    댓글