| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 | 31 |
- github
- WHERE절
- WIL
- 가상환경
- 알고리즘
- channels
- REDIS
- 2주차
- js
- Commpot
- 채팅
- 프로젝트
- 미니프로젝트
- poetry
- 개발일지
- Class
- re-id
- 정보처리기사실기
- 백준
- 마스킹
- 프로그래머스
- 장고
- 정보처리기사
- vscode
- resnet50
- 파이썬
- 1주차
- sql
- Git
- WebSocket
- Today
- Total
개발일기
[정보처리기사 실기 이론정리5] 서버 프로그램 본문
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 기반의 작업스케줄러
'정보처리기사 도전기' 카테고리의 다른 글
| [정보처리기사 실기 이론정리7] 객체 지향 설계 (0) | 2024.07.27 |
|---|---|
| [정보처리기사 실기 이론정리6] 인터페이스 (0) | 2024.07.27 |
| [정보처리기사 실기 이론정리4] 화면 설계, UI (0) | 2024.07.27 |
| [정보처리기사 실기 이론정리3] 소프트웨어 설계 (0) | 2024.07.27 |
| [정보처리기사 실기 이론정리2] 프로젝트 계획 및 분석 (0) | 2024.07.21 |