728x90
1. 개발환경 구축
1) 개발환경 구축
- 응용 sw 개발 편의성, 성능 향상 위해 HW, SW 개발환경 구축
- 도구: 빌드 도구, 구현 도구, 테스트 도구, 형상 관리 도구
빌드도구 | 작성한 코드의 빌드 & 배포를 수행하는 도구 각각의 구성요소와 모듈에 대한 의존성 관리하는 도구 Maven, Gradle, Ant |
구현 도구 | 코드 작성, 디버깅 작업 시 사용 Eclipse, IntelliJ, NetBeans, Spring Tool Suite |
테스트 도구 | 코드의 기능 검증 + 전체 품질 높임 코드의 테스트, 테스트 계획, 수행, 분석 xUnit, PMD, Findbugs, Cppcheck, SonarQube |
형상 관리 도구 | 개발자들이 작성한 산출물에 대한 비전 관리 도구 프로젝트 진행 시 필수 Git, SVN, CVS |
<개발환경 구성요소>
하드웨어 개발환경
① 서버 하드웨어 개발환경
웹 서버 | 웹 브라우저의 요청을 받아 HTTP를 통해 HTML문서, object(이미지)를 전송해주는 서버 Apache HTTP 서버, Microsoft Internet Information service, Google Web Server |
웹 애플리케이션 서버 | 사용자에게 동적 서비스를 제공하기 위해 웹 서버로부터 요청을 받아 데이터 처리를 수행하거나, (웹 서버 <-> 데이터베이스 서버) or (웹 서버 <-> 파일 서버) 사이에서 인터페이스 역할을 수행 Oracle WebLogic, Apache Tomcat, IBM WebSphere, JEUS |
데이터베이스 서버 | 데이터베이스와 DBMS를 운영하는 서버 MySQL 서버, Oracle 서버, MS-SQL 서버 |
파일 서버 | 파일 저장 HW로 물리 저장 장치를 활용한 서버 대용량 HDD, SSD 등 장치 존재 AWS S3 |
② 클라이언트 하드웨어 개발환경
- 서버 개발환경에서 제공된 서비스를 사용하기 위해 UI를 제공
- 클라이언트 서버, 웹 브라우저, 모바일 앱, 모바일 웹으로 구분
클라이언트 프로그램 | 설치를 통해 사용자와 커뮤니케이션 Visual Basic, C#, Delphi 등으로 개발되어 사용 |
웹 브라우저 | 웹 서비스 형태로 서버에서 웹 어플리케이션을 응답 시 브라우저를 통해 사용자와 커뮤니케이션 일반적인 형태의 웹사이트 |
모바일 앱 | 모바일 디바이스에 설치되어 활용 App Store 다운로드 가능 |
모바일 웹 | 웹 브라우저와 동일한 형태로 모바일 상 웹 브라우저를 통해 서비스 제공 모바일에 최적화 되어 제공되는 웹사이트 |
소프트웨어 개발환경
- 프로젝트 요구사항에 부합한 운영체제, 미들웨어, DBMS 선정
운영체제 | 서버의 하드웨어를 사용자 관점에서 편리하고 유용하게 사용하기 위한 SW |
미들웨어 | 웹 서버, JVM과 같은 개발환경의 구성요소 웹 서비스는 웹 서버를 설치하여 사용자 요구사항에 적합한 웹 서비스 제공한다 자바 기반 환경에서 JVM 설치하여 컨테이너로의 기능을 이용 |
DBMS | 데이터의 저장 및 활용 위해 사용자 요청 따라 제품 선택 |
2) 서버 개발 프레임워크
프레임워크
- 소프트웨어의 구체적인 부분에 해당하는 설계와 구현을 재사용이 가능하게끔 일련의 협업화된 형태로 클래스들을 제공하는 틀
- 소프트웨어 구성에 필요한 기본을 제공
- 정보 시스템의 개발 & 운영을 지원하는 도구 및 가이드 등 포함
프레임워크 특징
- 대표 4가지: 모듈화, 재사용성, 확정성, 제어의 역행(IoC)
Modularity | 구현을 인터페이스 뒤에 감춰 모듈화 강화 설계와 구현 변경에 따르는 영향 최소화 |
Reusability | 인터페이스를 통해 여러 애플리케이션에서 반복적으로 사용하는 일반적 컴포넌트를 정의하여 재사용성 높임 |
Extensibility | 다형성을 통해 프레임워크의 인터페이스를 확장가능 |
Inversion of Control | 프레임워크 코드가 전체 애플리케이션의 처리 흐름을 제어 외부 이벤트에 대해 애플리케이션이 어떤 메서드를 수행해야할 지 결정 |
프레임워크 구성요소
- 개발환경, 실행환경, 운영환경, 관리환경
개발환경 | 설계, 구현, 테스트 등 개발에 필요한 지원 도구 모음 |
실행환경 | 자바 기반 응용시스템 개발 시 필수적 기능을 패턴화해 미리 구현해둔 라이브러리 코드 모음 |
운영환경 | 표준 프레임워크 기반 개발 시스템 운영 시 필요한 의사소통 & 모니터링 도구 모음 |
관리환경 | 표준 프레임워크에 대한 기술 지원, 업그레이드 등을 관리하기 위한 내부 업무 시스템 |
2. 서버 프로그램 구현
1) 보안 취약성 식별
보안 취약점
- 정보시스템에 불법적인 사용자의 접근/ 정상적인 서비스 방해/ 중요 데이터 유출, 변조, 삭제 위험
- 시스템의 정보 보증을 낮추는 데 사용되는 약점
침투 테스트(Penetration Test)
- 시스템을 안전하게 만들기 위해 전문 해커가 공격자보다 먼저 시스템 취약점 찾음
- 절차
1 | 정찰 | 목표 애플리케이션 관련정보 수집 |
2 | 탐색 | 검사, 보안 위협 관련 상세 정보 확인 |
3 | 접근 권한 취득 | 허점 찾아내서 악성 코드 삽입, 데이터 접근 권한 얻고 공격 |
4 | 엑세스 유지 | 접근 권한 계속 유지, 다수의 공격 테스트 수행 |
5 | 추적 방지 | 흔적을 남기지 않도록 로그, 수집된 데이터 등의 접근 이력 모두 제거 |
취약성 공격
- 악성 코드, 악성 프로그램 등 이용 -> 보안 버그나 잘못된 설정 등의 결함에 대한 공격
- 목표: 대상 시스템 장악, 정보 빼내거나 다른 용도 악용
- 랜섬웨어(중요 데이터 암호화)도 취약점 공격을 통해 권한 획득
취약성에 따른 공격기법
Exploit | 컴퓨터의 SW나 하드웨어 및 컴퓨터 관련 전자 제품의 버그, 보안 취약점 등 설계상 결함을 이용해 공격자의 의도된 동작을 수행하도록 만들어진 절차 or 일련의 명령, 스크립트, 프로그램을 사용한 공격행위 |
Dos(서비스 거부) | 무의미한 서비스 요청 반복 -> 시스템 가용 자원 소모시켜 서비스 가용성 저하 시킴 |
코드 실행 | 응용 프로그램이 적절한 입력 유효성 검사 없이 쉘 명령을 실행하는 취약점 이용 공격자가 원하는 임의 코드 실행 |
버퍼 오버플로우 | 정해진 메모리 범위 초과시킴 -> 원래의 리턴 주소 변경 임의의 프로그램이나 함수를 실행시키는 시스템 해킹 기법 |
정보 수집 | 서버 또는 시스템의 취약점, 네트워크 경로, 방화벽 설치 유무 알아내서 정보를 수집 |
권한 상승 | 악성 프로그램 설치 후 데이터 조회, 변경, 삭제 등을 통한 권한 상승으로 루트권한 획득 |
SQL 삽입(Injection) | 데이터베이스와 연동된 웹 어플리케이션에서 공격자가 입력 폼 및 URL 입력 란에 SQL문 삽입 DB로부터 정보 열람 |
XSS (크로스 사이트 스크립팅) |
게시판에 악성 스크립트 작성, 삽입 사용자가 봤을 때 이벤트 발생 -> 사용자의 쿠키 정보, 개인정보 등을 특정 사이트로 전송 |
CSRF (사이트 간 요청 위조 공격) |
웹 사이트 취약점 공격 사용자가 공격자가 의도한 행위(수정, 삭제, 등록 등)를 특정 웹사이트에 요청하게 함 |
디렉터리 접근 | HTTP 기반의 공격 엑세스가 제한된 디렉터리 접근 -> 서버의 루트 디렉터리에서 외부 명령을 실행: 파일, 웹소스 등을 강제로 내려받게 함 |
FTP 바운스 공격 | FTP 서버가 데이터를 전송할 때 목적지가 어디인지 검사하지 않는 설계상의 문제점 활용 |
시큐어 코딩
- SW 개발 과정에서 개발자의 실수, 논리적 오류 등으로 인해 sw에 내포될 수 있는 보안 취약점 최소화하는 활동
2) API
API
- 응용프로그램에서 사용할 수 있도록 운영체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스
- 명확하게 정의된 다양한 컴포넌트 간의 통신 방법
- 프로그래머가 특정 기술을 사용하기 쉽게 해줌
- 필요 기능 추상화/ 객체, 클래스 등을 제공
API 유형
- 오픈 API: 누구나 쉽게 접근하여 정보를 공유
- 비공개 API: 권한이 있는 일부 사용자들에게만 정보 제공
API 종류
윈도즈 API | windows os가 사용하는 api |
웹 API | 웹 어플리케이션에서 다른 서비스에 요청 보내고 응답받기 위해 정의된 거 XML, JSON, SOAP, REST |
오픈 API | 플랫폼의 기능과 콘텐츠를 외부에서 웹 프로토콜(HTTP)로 호출해 사용할 수 있게 만든 개방 API 개발자 사이트 등에서 제공하는 지도, 검색, 머신러닝 등 |
자바 API | 자바를 사용하여 쉽게 구현할 수 있도록 한 클래스 라이브러리 집합 입출력, 화면 구성, 이미지, 네트워크 등 미리 구현 |
3. 배치 프로그램 구현
1) 배치 프로그램
- 배치프로그램: 사용자와의 상호작용 없이 일련의 작업들을 작업 단위로 묶어 정기적으로 반복 수행 or 정해진 규칙에 따라 일괄 처리하는 프로그램
- ex) 배치 수행, 저장소 조회, 전일 매출 조회 요청, 반환
배치 프로그램의 필수 요소
자동화 | 심각한 오류 상황 외에는 사용자의 개입 없이 동작 |
안정성 | 어떤 문제가 생겼는지, 언제 발생했는지 등을 추적할 수 있어야함 |
대용량 데이터 | 처리 가능 |
견고성 | 유효하지 않은 데이터의 경우도 처리해서 비정상적인 동작 중단 발생하지 않아야 함 |
성능 | 주어진 시간 내에 처리를 완료할 수 있어야 하고, 동시에 동작하고 있는 다른 애플리케이션을 방해하지 말아야 함 |
배치 프로그램 유형
- 이벤트 배치: 사전 정의 조건
- 온디맨드 배치: 사용자 명시적 요구
- 정기 배치: 정해진 시점(주로 야간)
배치 프로그램 종류
- 스프링 배치: spring 프레임워크의 AOP, DI, 서비스 추상화 등 3대 요소 모두 사용할 수 있는 대용량 처리를 제공하는 스케줄러
- 쿼츠 스케줄러: spring 프레임워크에 플러그인 되어 수행하는 작업과 실행 스케줄을 정의하는 트리거를 분리하여 유연성을 제공하는 오픈소스 기반 스케줄러
배치 프로그램 구현 절차
- (1) 배치 프로그램 확인 (2) 배치 설계서 확인
참고:
시나공 2023 정보처리기사
728x90