정보처리기사 도전기

[정보처리기사 실기 이론정리5] 서버 프로그램

츄98 2024. 7. 27. 11:48

1. 서버환경구축

  • 웹 서버(WEB) : 클라이언트에게 정적 파일(HTML, CSS, Javascript 등)을 제공하는 서버
  • 웹 애플리케이션 서버(WAS) : 동적인 웹 서비스를 제공하기 위한 서버
  • 데이터베이스서버(DBMS) : 데이터의 저장, 관리를 위한 서버
  • 파일서버 : 사용자 파일을 저장하고 공유하는데 사용되는 서버
  • 로드밸런서 : 여러대의 서버가 있을 경우, 이들 사이에 네트워크 요청을 효율적으로 분배하는 장치
    - 분배방식 : Random, Least loaded(가장 적은 양의 작업을 처리하는 서버에게 요청), Round Robin(순서를 정함)
  • CDN(Content Delivery Network) : 대용량 콘텐츠를 빠르게 제공하기 위해 사용자에게 물리적으로 가까운 위치에 있는 서버 네트워크를 사용

2. 시스템 소프트웨어

  • 운영체제(OS) : 컴퓨터 하드웨어 운영을 관리하는 소프트웨어
  • JVM(Java Virtual Machine) : 자바 관련 프로그램을 실행하기 위한 환경 제공
  • 웹 서버 : 정적 웹 서비스를 제공하는 미들웨어
  • WAS(Web Application Server) : 동적 웹 서비스를 제공하는 미들웨어
  • DBMS :  데이터의 저장, 관리, 검색 등을 위한 데이터베이스 소프트웨어

3. IDE(Integrated Development Environment) 도구 : 소프트웨어 개발에 필요한 다양한 기능을 하나의 프로그램 내에서 제공하는 소프트웨어

4. 형상관리 : 소프트웨어 개발 과정에서 발생하는 모든 변경사항을 통제하고 관리

5. 버전관리도구

  • 공유폴더방식(RCS, SCCS) : 파일을 공유 폴더에 저장하고, 담당자가 에러 체크와 정상작동여부를 확인
  • 클라이언트/서버방식(CVS, SVN) : 중앙 서버에 버전관리시스템이 항시 운영, 개발자들은 이 시스템과 연동하여 작업
  • 분산 저장소 방식(Git) : 중앙저장소와 로컬 저장소가 별도로 존재하며, 로컬에서 작업 후 중앙 저장소에 반영

6. 버전관리도구별 특징

  • CVS : 중앙에 위치한 저장소에 저장, 인가된 사용자 접근 가능, 커밋 중 오류 발생 시 롤백되지 않음
  • SVN : 최초 1회 파일 원본을 저장 후 변경사항만 기록, Trunk, Branches, Tags 구조로 형상관리 수행, 원하는 시점으로 복구 가능, 커밋 실패 시 롤백 가능
  • Git : 분산 버전 관리 시스템
  • BitKeeper : SVN과 비슷한 중앙 통제 방식을 사용, 대규모 프로젝트에서 빠른 속도를 낼 수 있음
  • RCS(Revision Control System) : 소스파일의 수정을 한 사람만 허용, 다수의 사용자가 파일 수정할 수 없도록 하는 버전 컨트롤 시스템, 파일을 잠금 처리하여 버전 관리

7. 빌드: 소스코드 파일들을 컴파일하고, 다른 필요한 과정들을 거쳐 실행 가능한 소프트웨어로 변환하는 일련의 과정

8. 빌드 자동화 도구

  • MAKE : Unix 운영 체제, Makefile에 정의된 파일 간 종속관계를 기반으로 컴파일 과정을 관리
  • Ant : Java 기반의 빌드 도구, XML 기반의 빌드 스크립트를 사용
  • Maven : Java 기반 빌드 도구, pom, xml 파일을 통해 라이브러리 의존성을 관리, 필요한 라이브러리를 자동으로 다운로드
  • Jenkins : Java 기반의 오픈소스 지속적 통합 서비스 도구
  • Gradle : Groovy  기반의 오픈 소스 빌드 자동화 도구

9. 프레임워크 :

  • 소프트웨어 개발에 필요한 공통적인 구성요소와 아키텍처를 일반화하여 제공하는 반제품 형태의 소프트웨어
  • 모듈화, 재사용성, 확장성, 제어의 역흐름

10. 라이브러리 : 컴퓨터 프로그램에서 자주 사용되는 루틴이나 리소스를 모아 놓은 것

11. API(Application Programming Interface) : 소프트웨어 간의 인터페이스, 다른 소프트웨어 또는 서비스와 상호작용

12. 결합도 : 모듈과 모듈 간의 관련성/ 의존성 정도, 결합도가 낮을수록 잘 설계된 모듈

  • (결합도약함) 자료결합도 -> 스탬프결합도 -> 제어결합도 -> 외부결합도 -> 공통결합도 -> 내용결합도 (내공외제스자)
자료결합도 모듈 간의 인터페이스로 값이 전달
스탬프결합도  모듈 간의 인터페이스로 배열, 오브젝트, 스트럭처 등이 전달
제어결합도 값만 전달되는 게 아니라 어떻게 처리를 해야 한다는 제어요소가 전달
외부결합도 어떤 모듈에서 선언한 데이터를 외부의 다른 모듈에서 참조
공통결합도 파라미터가 아닌 모듈 밖에 선언되어 있는 전역변수를 참조하고, 전역 변수를 갱신하는 식으로 상호작용
내용결합도 다른 모듈 내부에 있는 변수나 기능을 다른 모듈에서 사용

 

13. 응집도 : 모듈 내부에서 구성요소 간에 밀접한 관계를 맺고 있는 정도, 응집도가 높을수록 잘 설계된 모듈 

  • (응집도약함) 우연적 응집도 -> 논리적 응집도 -> 시간적 응집도 -> 절차적 응집도 ->
    통신적 응집도 -> 순차적 응집도 -> 기능적 응집도 (기순통절시논우)
우연적 응집도 모듈 내부의 각 구성요소들이 연관이 없을 경우
논리적 응집도 유사한 성격을 갖거나 특정 형태로 분류되는 처리 요소들이 한 모듈에서 처리되는 경우
시간적 응집도 연관된 기능이라기보다는 특정 시간에 처리되어야 하는 활동들을 한 모듈에서 처리하는 경우
절차적 응집도 모듈이 다수의 관련기능을 가질 때 모듈 안의 구성요소들이 그 기능을 순차적으로 수행 
통신적 응집도 동일한 입력과 출력을 사용하여 다른 기능을 수행하는 활동들이 모여 있을 경우
순차적 응집도 모듈 내에서 한 활동으로부터 나온 출력값을 다른 활동이 사용할 경우
기능적 응집도 모듈 내부의 모든 기능이 단일한 목적을 위해 수행

14. 팬인, 팬아웃 : 시스템 복잡도를 최적화하기 위해서는 팬인은 높게, 팬아웃은 낮게 설계

15. 공통 모듈 구현요소 :

DTO(Data Transfer Object) 프로세스 사이에서 데이터를 전송하는 객체, Getter, Setter  메서드만 포함
VO(Value Object) 도메인에서 속성들을 묶어서 특정 값을 나타내는 객체, Read-Only 속성 객체
DAO(Data Access Object) 실질적으로 DB에 접근하는 객체 
Service DAO 클래스를 호출
Controller 비즈니스 로직을 수행

16. Annotation : 주석이라는 의미

  • @Controller : 웹 요청과 응답을 처리하는 컴포넌트 정의
  • @RequestMapping : 클래스나 메서드가 특정 URI에 매핑되어 있음을 명시, URL 요청을 메서드에 연결
  • @RequestParam : HTTP 요청 헤더에서 정보를 추출
  • @PathVariable : URI 일부를 변수로 추출할 때 사용
  • @CookieValue : 요청 쿠키 값을 메서드의 인자로 전달하는데 사용
  • @ModelAttribute : 자동으로 모델 객체를 뷰까지 전달
  • @ResponseBody : 메서드의 리턴 타입을 HTTP 응답 본문으로 전송하도록 지정, JSON/XML 응답을 생성
  • @RequestBody : HTTP  요청의 본문을 객체로 전달 받을 때 사용
  • @Repository : DAO 클래스에 사용, 데이터베이스 연산과 관련된 작업 수행
  • @Service : 서비스 계층의 클래스임을 명시, 비즈니스 로직 처리
  • @Scheduled : 정해진 시간, 조건에 따라 메서드 실행, 배치작업을 정의할 때 사용

17. MVC 모델의 계층 :

  • 프레젠테이션 계층 : 사용자 인터페이스 관련 부분
  • 제어 계층 : 프레젠테이션 계층과 비즈니스 로직 계층 간의 중간자 역할
  • 비즈니스 로직 계층 : 애플리케이션의 핵심 업무 로직 처리, 데이터의 적합성 검증, 트랜잭션 처리 등
  • 퍼시스턴스 계층 : 데이터 관리와 관련된 모든 작업 담당, CRUD(생성, 수정, 삭제, 선택) 연산
  • 도메인 모델 계층 : 실질적인 비즈니스 객체,  DTO 사용하여 계층 간에 데이터를 전달

18.  DBMS 접속 기술

  • 소켓통신 : 응용 프로그램과 DBMS 간에 주고받는 통신 방법
  • Vender API : 각 DBMS 제공 업체에서 공개한 API를 이용해 DBMS 통신
  • JDBC(Java DataBase Connectivity) : Java 언어를 사용해 DB에 접속하고 SQL 문을 수행, 접속하려는 DBMS에 맞는 드라이버가 필요
  • ODBC(Open DataBase Connectivity) : 데이터베이스에 접근하기 위한 표준규격, 개발 언어에 관계없이 사용

19. ORM(Object-Relational Mapping) 프레임워크 : 객체지향 프로그래밍과 관계형 데이터베이스 간의 호환성 격차를 해결

  • SQL Mapper : SQL을 명시하여 단순히 필드를 매핑시키는 것이 목적
  • OR Mapping(ORM) : 객체를 통해 간접적으로 데이터베이스를 다룸, 객체와 관계형 데이터베이스 데이터를 자동매핑

20. OWASP(The Open Web Application Security Project) : 오픈소스 웹 애플리케이션 보안 프로젝트

21. 보안약점 종류

  • SQL injection :  SQL 쿼리 삽입을 통한 데이터베이스 정보 열람 및 조작
  • XSS(크로스 사이트 스크립트) : 사용자 측에서 실행되는 악의적 스크립트 삽입
  • 메모리 버퍼 오버플로 : 입력값으로 인해 버퍼가 넘쳐 다른 메모리 공간 침범
  • 하드코딩된 패스워드
  • 경쟁 조건 : 동일 자원에 대한 검사시점과 사용시점이 다를 때 발생하는 동기화 오류나 교착상태

22. 배치 : 데이터를 일괄적으로 모아서 처리하는 대량의 작업을 처리

23. 배치 프로그램 : 대량의 데이터를 모아 정기적으로 반복 처리하는 프로그램

  • 크론탭 : UNIX, LINUX 계열에서 사용
  • Spring Batch : 백엔드에서 배치 처리를 위한 프레임워크
  • Quartz Job Schedular : Java 기반의 작업스케줄러