ABOUT ME

-

Today
-
Yesterday
-
Total
-

Post Calendar

«   2024/11   »
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
  • 정보처리기사 실기 스터디[2022-10-08] - 서버 프로그램 구현
    자격증/정보처리기사 2022. 10. 8. 23:49

    📌 Study

    🔸 2022-10-08

    [서버 프로그램 구현]

    1. 개발환경 구축

    • 개발도구 분류
      • 빌드 도구 : 작성한 코드 빌드 및 배포 수행하는 도구
      • 구현 도구 : 개발 시 가장 많이 사용, 코드 작성 및 디버깅 작업 지원 도구
      • 테스트 도구 : 기능 검증, 품질 향상 도구
      • 형상 도구 : 버전관리, 프로젝트 진행 시 필수 도구

     

    • 하드웨어 개발 환경
      • 웹 서버 : 정적 콘텐츠, HTTP 이용한 요청/응답 처리
      • 웹 애플리케이션 서버(WAS) : 동적 콘텐츠
      • 데이터베이스 서버 : 데이터 수집, 저장
      • 파일 서버 : 물리 저장장치 활용

     

    • 소프트웨어 개발 환경
      • 운영체제 : 사용자 관점에서 편리하게 해주는 소프트웨어
      • 미들웨어 : 컴퓨터 간 연결, 관리를 도와주는 소프트웨어
      • DBMS : 데이터베이스 관리해주는 소프트웨어

     

    • 형상 관리(Configuration Management)
      • 개념 : 소프트웨어 개발 전 과정에 모든 항목의 변경사항 관리

     

    • 형상관리 절차
      • 형상 식별
      • 형상 통제
      • 형상 감사
      • 형상 기록

     

    • 소프트웨어 형상 관리 도구 유형
      • 공유 폴더 방식 : 약속된 위치의 공유 폴더에 복사, 정상일 경우 다음날 각 개발자들이 동작 여부 확인
      • 클라이언트/서버 방식 : 중앙에 버전 관리 시스템 항시 동작, 서로 다른 개발자가 같은 파일 작업 시 경고 메시지
      • 분산 저장소 방식 : 로컬 저장소와 원격 저장소로 분리되어 분산 저장, 로컬 저장소에 커밋한 후 원격 저장소에 푸시

     

    • 소프트웨어 형상 관리 도구별 특징
    형상 관리 도구 설명
    CVS 서버와 클라이언트로 구성, 다수 인원이 동시에 범용적인 운영체제로 접근 가능
    SVN 하나의 서버에서 소스를 쉽고 유용하게 관리, 저장소를 만들어 소스를 저장
    RCS CVS와 달리 소스 파일의 수정을 한 사람만으로 제한, 파일 잠금 방식
    Bitkeeper SVN과 비슷한 중앙 통제 방식, 대규모 프로젝트에서 빠른 속도
    Git Git 속도에 중점을 둔 분산형 버전 관리 시스템, 대형 프로젝트에서 효과적이고 유용, 기록 추적 가능
    Clear Case 복수 서버/클라이언트 구조, 서버가 부족하면 필요한 서버를 하나씩 추가하여 확장성 가능

     

    2. 공통 모듈 구현

    • 모듈 : 하나의 완전한 기능을 수행하는 독립된 실체

     

    • 모듈의 특징
      • 각 모듈은 상대적으로 독립성을 가짐
      • 모듈 단독으로 컴파일 가능, 재사용 가능
      • 독립성이 높은 모듈일수록 수정 시 다른 모듈들에게 영향을 거의 미치지 않고, 오류 발생 시 쉽게 해결 가능
      • 독립성을 높이려면 결합도는 약하게, 응집도는 강하게, 모듈의 크기는 작게 만들어야 함

     

    • 모듈화 기법
    기법 설명
    루틴 소프트웨어에서 특정 독작을 수행하는 일련의 코드, 기능을 가진 명령들 모임
    메인 루틴 프로그램의 주요 부분, 전체의 개략적인 동작 절차 표시하도록 만들어진 루틴
    서브 루틴 메인 루틴에 의해 필요할 때마다 호출되는 루틴

     

    • 응집도 : 모듈의 독립성 정도
    유형 설명
    우연적 응집도(Coincidental Cohesion) 모듈 내부 각 요소가 연관이 없을 경우
    논리적 응집도(Logical Cohesion) 유사한 성격, 특정 형태 분류되는 처리 요소들이 한 모듈에서 처리되는 경우
    시간적 응집도(Temporal Cohesion) 특정 시간에 처리되어야 하는 활동들을 한 모듈에서 처리되는 경우
    절차적 응집도(Procedural Cohesion) 모듈이 다수 기능 가질 때, 구성 요소들이 기능을 순차적으로 수행할 경우
    통신적 응집도(Communication Cohesion) 동일한 입/출력 사용하여 다른 기능 수행하는 활동들이 모여있을 경우
    순차적 응집도(Sequential Cohesion) 모듈 내 한 활동으로부터 나온 값이 다른 활동이 사용할 경우
    기능적 응집도(Functional Cohesion) 모듈 내부 모든 기능이 단일한 목적을 위해 수행되는 경우

     

    • 결합도 : 모듈 외부와의 연관도, 모듈간 상호의존성
    유형 설명
    내용 결합도(Content Coupling) 다른 모듈 내부의 기능을 다른 모듈에서 사용하는 경우
    공통 결합도(Common Coupling) 모듈 외부 전역 변수를 참조하고, 전역 변수를 갱신하여 상호 작용, 공유
    외부 결합도(External Coupling) 두 개의 모듈이 외부 인터페이스를 공유, 외부 모듈에서 선언한 데이터를 외부 다른 모듈에서 참조
    제어 결합도(Control Coupling) 내부 논리 조직을 제어하기 위한 목적, 제어신호를 이용하여 통신, 하위 모듈에서 상위 모듈로 제어 신호 이동, 권리전도 현상
    스탬프 결합도(Stamp Coupling) 모듈 간 인터페이스로 배열이나 객체, 구조 등 전달, 두 모듈이 동일한 자료 구조 조회
    자료 결합도(Data Coupling) 모듈 간 인터페이스로 전달되는 파리미터를 통해서만 상호작용, 한 모듈의 내용을 변경하더라도 다른 모듈에 영향 미치지 않음

     

    • 공통 모듈 구현 절차
      • DTO/VO => SQL => DAO => Service => Controller => 화면

     

    • MVC 패턴
      • 모델 : 애플리케이션이 무엇을 할 것인지 정의, 내부 비즈니스 로직 처리 역할
      • : 화면에 무엇인가를 보여주기 위한 역할, 화면 전시
      • 컨트롤러 : 모델이 어떻게 처리할 지 알려주는 역할, 뷰에 명령

     

    • 팬인 / 팬아웃 : 모듈을 계층적으로 분석, 시스템의 복잡도 측정
    팬인 팬아웃
    어떤 모듈을 제어하는 모듈의 수 어떤 모듈에 의해 제어되는 모듈의 수
    모듈 자신을 기준으로 모듈에 들어오면 팬인 모듈 자신을 기준으로 모듈에서 나가면 팬아웃
    팬인이 높으면 재사용 측면에서 설계가 잘 된 것이지만 단일 장애점 발생 가능, 관리, 테스트 비용 증가 팬아웃이 높을 경우는 불필요한 모듈 호출 여부 검토 필요, 단순화 여부 검토 필요

     

    • 공통 모듈 테스트 => 화이트박스 기법, 대표적인 단위 테스트 도구 : jUnit
      • 화이트박스 = 내부 구조와 동작 검사

     

    3. 서버 프로그램 구현

    • 서버 프로그램 : 업무 프로세스를 기반으로 개발언어와 도구를 이용해 서버에서 서비스 제공에 필요한 기능 구현
      • 백엔드
      • 프론트엔드

     

    4. 배치 프로그램 구현

    • 배치 프로그램 : 사용자와 상호작용 없이 일련의 작업들을 정해진 규칙에 따라 일괄 처리하는 방법
    유형 설명
    이벤트 배치 사전에 정의해 둔 조건 충족 시 자동으로 실행
    온디맨드 배치 사용자의 명시적 요구가 있을 때마다 실행
    정기 배치 정해진 시점(주로 야간)에 정기적으로 실행

     

    • 배치 스케줄러 : 일괄 처리를 위해 주기적으로 발생하거나 반복적으로 발생하는 작업을 지원하는 도구
    종류 설명
    스프링 배치 스프링 프레임워크의 DI, AOP, 서비스 추상화 등 스프링 프레임워크의 3대 요소를 모두 사용할 수 있는 대용량 처리를 제공하는 스케줄러 배치 애플리케이션
    쿼츠 스케줄러 스프링 프레임워크에 플러그인되어 수행하는 작업과 실행 스케줄을 정의하는 트리거를 분리하여 유연성을 제공하는 오픈 소스 기반 스케줄러

     

    • Cron 표현식 : 스케줄러를 실행시키기 위해 작업이 실행되는 시간 및 주기 등을 설정하게 되는데 크론 표현식을 통해 배치 수행시간 설정

     

    • 리눅스/유닉스 크론 표현식(순서)
      • 시간
      • 요일
      • 연도(생략 가능)

     

    • 쿼츠 크론 표현식(순서)
      • 시간
      • 요일
      • 연도(생략 가능)

     

    • 크론 표현식 특수문자 의미
    기호 의미
    * 모든 수
    ? 해당 항목을 미사용
    - 기간 설정
    , 특정 기간 설정
    / 시작 시간과 반복간격 설정
    L 마지막 기간에 동작
    W 가장 가까운 평일에 동작
    # 몇 번째 주, 요일 설정

     

    • 크론 표현식 특수문자 예시
    사용 예 의미
    0 0 12 * * ? 매일 12시에 실행
    0 * 14 * * ? 오후 14시에서 15시 사이에 매 분마다 실행
    0 0 20 ? * MON-FRI 매주 월요일과 금요일 사이 20시에 실행
    0 15 10 L * ? 매달 마지막 날 10시 15분에 실행
    0 15 10 ? * 6L 2021-2022 2021년부터 2022년 매달 마지막 토요일 10시 15분에 실행
    0 11 11 1 1 ? 1월 1일 11시 11분마다 실행

    댓글

Designed by Tistory.