용어집
강의명 : 백엔드 프레임워크 만들기 (개정판)
수강 기한 : 무제한
진도율 : 0강/91강 (0%) | 시간 : 0분/812분
나가기
미수강
이전수업
다음수업

강의에 사용된 용어입니다. 수강에 도움이 되길 바라며 정리했습니다.

틀린 내용이나 이해가 안되는 용어
또는 추가해야 할 용어가 있으면
게시판에 올려주세요. 반영하도록 하겠습니다.

[섹션 소스코드]
https://github.com/zeroshift01/code5

섹션1

SW 공학의 애자일
- 작동하는 SW 를 사용자에게 반복해서 전달하기 위해 민첩성을 강조하는 개발 방법론

의사소통
- 공통의 관심을 평균적 지식을 사용해 서로 이야기 하는 활동

배포(릴리즈)
- 작동하는 SW 를 사용자에게 전달하는 행위

폭포수개발방법론
- SW 를 만들기 위해 구분한 절차를 순서대로 한번만 수행하는 SW 개발 방법론

작동하는소프트웨어
- 사용자 요구사항을 확인할 수 있는 코드

서블릿
- 인터넷 프로그래밍을 java 언어를 사용 쉽게 구현할 수 있도록 도와주는 라이브러리

MVC아키텍처스타일
- 사용자 요구사항을 모델, 뷰, 컨트롤러 3개 관점으로 분리 동시 개발 가능, 모듈의 재사용을 높인 아키텍쳐스타일

스케일아웃
- 동시 처리량을 늘리기 위해 새로운 컴퓨터를 클러스터(동시에 같은 서비스를 처리) 환경에 추가하는 방법

스케일업
- 컴퓨터 성능을 높히기 위해 HW 를 업그레이드 하는 방법

도커
- 하이퍼 바이저 없이 격리된 실행환경을 제공하는 어플리케이션 경량화 가상화 기술

프레임워크
- 절반만 만들어진 실행 가능한 소프트 웨어, 나머지 절반은 서비스 코드

비즈니스로직(서비스코드)
- 사용자 요구사항을 이해한 개발자가 구현한 코드

SW위기
- 시스템(HW 와 SW 가 결합된)을 만들때 HW 개발 비용보다 SW 개발비용이 기하 급수적으로 증가되는 문제

라이브러리
- SW 재사용을 위해 개발자 관점으로 모은 프로그램

플렛폼
- 사용자와 개발자간 필요한 요구사항을 해결해주고 중개하는 서비스

프로세스
- 운영체제가 관리하는 격리된 실행 상태를 보장하는 실행 단위

web.xml
- WAS 가 실행될때 필요한 정보를 가지고 있는 문서

UTF-8
- 세상의 모든 글자를 최대 3바이트 크기로 표현할 수 있는 캐릭터셋

WAS
- 동적 서비스 요청을 이해하고 필요한 프로그램을 실행한뒤 결과를 출력하는 서버

WEB
- DMZ 영역에 위치 정적 자원 요청을 응답하고 동적 서비스 요청을 중계하는 서버

데일리빌드
- SW 생명주기동안 발생되는 의사소통 비용을 줄이기 위해 매일 코드를 모으고 컴파일 하는 행위

절대경로
- 그 자체로 자원을 찾을 수 있는 정보

상대경로
- 추가 계산을 통해 자원을 찾을 수 있는 정보

java 의 모듈
- 하나의 JVM 안에 또다른 격리환경을 보장하기 위한 단위

네트워크의 MAC
- 스위치에 연결된 컴퓨터를 찾아 갈 수 있는 네트워크 카드의 물리적 주소

네트워크의 IP
- 라우터에 연결된 컴퓨터를 찾아 갈 수 있는 컴퓨터의 논리적 주소

네트워크의 포트
- 컴퓨터에 실행되는 특정 프로세스를 알아내고 접속할 수 있는 정보

네트워크의 프로토콜
- 송신자와 수신자가 교환된 데이터가 맞음을 알게 해주는 규칙

스위치
- 송신자와 수신자간 데이터그램을 교환할 수 있게 브로드캐스트 하는 장치

라우터
- 송신자와 수신자간 패킷을 교환할 수 있게 유니케스트 하는 장치

브로드케스트
- 네트워크에 연결된 모든 컴퓨터에 데이터를 전달하는 기술

DOS공격
- 대량의 요청으로 시스템의 자원을 고갈시켜 정상적인 사용자가 서비스를 사용하지 못하도록 하는 공격

섹션2

객체지향의 추상화
- 복잡하고 어려운 대상을 필요한 것만 남겨두고 표현한 결과

객체지향의 실체화
- 정해진 틀에 맞는 실행 가능한 코드를 만든 결과

객체지향의 상속
- 공통코드를 재사용 하기 위해 수직적인 구조로 클래스를 구성하는 기법

객체지향의 객체
- 프로그램이 실행 된 후 기능과 데이터가 결정된 실행 가능한 모듈

객체지향의 클래스
- 데이터와 메소드가 하나의 모듈로 구성된 컴파일이 필요한 코드

공통기능
- SW 개발 비용을 줄이기 위해 선택되고 재사용 되는 코드

java의 추상화클래스
- 인터페이스의 장점인 추상화와 상속의 장점인 코드의 재사용을 결합한 클래스

java의 인터페이스
- 어려운 기능에서 필요한 기능만 표현 객체를 만들기 위한 기준을 제공하는 java코드

AOP
- 공통기능을 모듈로 모은 뒤 재사용 하기 편하게 기능으로 제공하는 프로그래밍 기법

횡단관점기능
- 2개 이상의 서비스코드에 존재하는 중복되는 코드

프레임워크
- 절반만 만들어진 실행가능한 소프트웨어, 만들어야 할 절반은 서비스 코드

java 의 ThreadLocal
- 쓰레드 아이디를 기준으로 객체를 보관 제공하며 쓰레드 안전성을 제공하는 유틸 클래스

A 가 B 에 의존한다.
- A 가 B 의 기능을 사용한다.

객체의 위임 전략
- 상속을 하지 않고 필요한 기능을 멤버 객체를 통해 사용하는 전략

디폴트 접근제한자
- 같은 패키지에 있는 클래스에서만 접근 할 수 있는 접근제한자

리펙토링
- 구현된 기능을 유지한 상태로 SW 품질을 높히는 활동

캐릭터셋
- 사람의 글자를 컴퓨터의 글자로 표현하기 위한 규칙

레거시 시스템
- 필요한 기능을 요청하고 결과를 받을 수 있는 기존 시스템

URI
- 인터넷에 있는 특정 자원을 요청할 수 있는 주소

URL
- 인터넷에 있는 특정 사이트에 접속할 수 있는 주소

SW 순응성
- 요구사항을 유연하게 반영할 수 있는 SW 특성

정형검증
- 수학적으로 표현된 규칙에 맞는지 SW 를 검증하는 기법

CI/CD
- 개발자가 만든 작동하는 SW를 반복적으로 사용에게 전달하기 위한 종합 기술

데브옵스
- 개발조직과 운영조직이 수평적으로 뭉쳐 SW 를 개발하고 전달하기 위한 조직 문화

퍼사드 패턴
- 복잡한 코드를 하나의 메소드로 추상화 하고 재사용 하는 디자인 패턴

미디에이터 패턴
- 복잡한 객체간 실행 흐름을 하나의 메소드로 제어하는 디자인 패턴

데이터 결합
- 파급효과가 발생했을 때 데이터를 통해 다른 기능을 선택 문제를 해결하는 결합도

스템프 결합
- 파급효과가 발생했을 때 똑같은 스템프 형태의 다른 기능을 선택 문제를 해결하는 결합도

내용 결함
- 파급효과가 발생했을 때 코드를 변경, 컴파일 후 문제를 해결하는 결합도

결합도, 응집도
- 결합도 : 2개 이상의 모듈간 뭉쳐있는정도
- 응집도 : 특정 기능들이 한개의 모듈에 모여 있는 정도, 높은 응집도와 낮은 결합도가 모듈의 목표

파급효과, 부작용
- 파급효과 (Ripple Effect) : 오류가 발생한 모듈이 다른 모듈에 영향을 미치는 결과
- 부작용 (side effects) : 오류를 수정했는데도 관련된 다른 모듈에 오류가 남아 있는 현상

회귀테스트
- 부작용을 줄이기 위해 누적된 테스트 케이스를 다시 실행해 SW 결함을 확인하는 활동

SW 비주얼라이제이션
- SW 개발 생명주기 각각에 맞는 오픈소스를 사용하고 이를 통해 만들어진 데이터로 SW 를 이해하는 활동

오버로딩
- 파라메터를 사용해 다양한 기능을 제공하는 기법

오버라이딩
- 기존 기능은 그대로 두고 상속을 통해 새로운 기능을 추가하기 위한 기법

XSS 공격
- HTML 을 표현하는 파라메터에 공격자의 코드를 끼워 악성코드를 실행하는 자바스크립트 공격 기법

쓰레드세이프티
- 멀티쓰레드 환경에서 동시에 사용되는 객체의 동기화가 적용된다는 의미 

섹션3

DB의 데이터 일관성
- 트렌젝션 규칙에 따라 여러명의 사용자가 동시에 일관된 데이터를 볼 수 있는 속성

DB의 데이터 무결성
- 설계된 DB 규칙에 맞는 데이터가 남아 있는 속성

DB의 데이터 영속성
- 시스템이 중단되더라도 다시 시작할 수 있는 중단 시점의 데이터를 제공할 수 있는 속성

DB, DBMS
- DB : 데이터의 실시간 공유, 내용에의한 참조, 지속적 갱신, 동시 사용 기능을 제공하는 프로그램
- DBMS : DB 기능을 제공함과 동시에 회복, 접근제어, 성능관리 등의 추가 기능을 제공하는 시스템

DB의 트렌젝션
- 2개 이상의 SQL 실행을 하나의 논리적 단위로 묶은 실행 단위

DBMS 의 MVCC
- 타임스템프로 우선순위를 부여하고 UNDO 영역에 데이터 버전을 관리해 DB 성능을 높인 기법

트렌젝션의 ACID
- 트랜잭션이 지켜야 할 4가지 속성

트렌젝션의 LDIC
- 트랜젝션 직렬성을 보장하기 위해 하지 말아야 할 4가지 현상

트렌젝션의 오류
- 클라이언트 중단, DBMS 종료, 운영체제 붕괴 등 트랜잭션을 더 이상 진행할 수 없는 상황

JDBC, JDBC 드라이버
- JDBC : SQL 기능을 사용하기 위한 틀
- JDBC 드라이버 : DBMS 구현 코드를 JDBC 틀에 맞게 구성한 라이브러리

COP : 클래스지향
- 컴파일 시점에 필요한 기능과 데이터가 결정되는 프로그램 기법

OOP : 객체지향
- 실행 시점에 필요한 기능과 데이터가 결정되는 프로그램 기법

APM (Application Performance Management)
- 사용자가 이해할 수 있는 WAS 성능을 측정하기 위한 솔류션

DB의 필드, 컬럼
- 테이블을 구성하는 수직(행) 정보

DB의 레코드, 튜플
- 테이블을 구성하는 수평(열) 정보

DB의 테이블, 릴레이션, 엔티티
- 필드와 레코드가 논리적으로 묶여 있는 관리 단위

DB의 도메인
- 테이블에 저장된 데이터 품질을 지키기 위한 정보

정적SQL
- SQL 실행계획을 재사용하기 위해 SQL 과 바인드 변수를 분리해 전달 실행하는 방법

동적SQL
- 하나의 String 객체에 SQL 을 만들어 전달하고 그대로 실행하는 방법

컬렉션객체
- 여러개의 객체를 다양한 자료구조 형태로 보관 재사용하기 위한 유틸 클래스

인터럽트
- 계획된 흐름이 처리되고 있을때 이를 외부에서 중지 시키기 위한 신호

TDD
- 이해한 요구사항을 테스트 코드로 먼저 표현하고 이 테스트 코드가 잘 실행되도록 구현 코드를 반복해서 개발하는 프로그래밍 기법

테스트의 스텁
- 테스트를 위해 가상의 결과를 출력하는 테스트 코드 (상향식 테스트)

테스트의 드라이버
- 만들어진 모듈을 실행해 결함을 확인하기 위한 테스트 코드 (하향식 테스트)

DB의 뷰
- 물리적 테이블을 서비스 관점에 따라 필요한 것만 선택한 논리적 테이블

코드 컨벤션의 카멜표현법
- 대소문자를 규칙에 맞게 섞어 클래스,객체,메소드를 표현한 규칙

코드 컨벤션의 언더라인표현법
- 대문자 또는 소문자만 사용하고 단어간 구분이 필요할때 언더라인을 사용하는 규칙

자바 패키지
- 클래스를 찾기 위한 디렉토리 정보

디자인패턴의 싱글톤패턴
- 프로그램에 단 한개의 객체만 생성하기 위한 디자인 패턴

섹션4

DTO, VO
- 데이터만 있는 클래스

클래스로더
- 개발자가 만든 클래스의 정보를 확인할 수 있는 유틸클래스

SW특성중 이식성
- 실행환경이 다르더라도 실행결과는 동일함을 보장하는 SW 특성

SW공학
- SW 비용을 낮추기 위해 필요한 도구, 기술 및 프로세스를 공학적으로 정리한 학문

객체지향의 캡슐화
- 모듈의 응집도를 높히기 위해 데이터와 기능을 하나의 객체로 모은 기법

객체지향의 정보은닉
- 모듈의 결합도를 낮추기 위해 객체의 필요한 것만 공개하는 기법

DAO
- SQL 기능과 서비스코드간 결합도를 낮추기 위해 만든 클래스

DI (의존성 주입)
- 원하는 기능을 실행하기 위해 관련 정보를 전달하는 과정

IOC (역전 제어)
- 컴파일 없이 필요한 기능을 프로그램(컨테이너)가 실행해주는 기능

A 가 B 의 기능을 의존한다.
- A 가 B 의 기능을 사용한다.

A 가 B 의 기능을 제어한다.
- A 가 B 의 객체를 생성하고 사용한 뒤 마무리 한다.

정적 바인딩
- 개발자의 코드로 객체간의 관계를 정의하고 컴파일로 기능을 사용하는 기법

동적 바인딩
- 객체간의 관계를 메타정보로 분리하고 실행시점에 이를 사용 기능을 사용하는 기법

미커인터페이스
- 단순하게 객체를 구분하기 위한 기능 정의가 없는 인터페이스

인터페이스의 디폴트메소드
- 인터페이스 클래스의 공통코드를 유틸메소드로 구현하기 위한 편의 기능

클래스패스(CLASSPATH)
- 프로그램이 실행 된 후 필요한 자원의 위치를 제공하는 환경변수

패스 (PATH)
- 자주 사용하는 프로그램의 위치를 보관한 환경변수

리스타트, 리로드
- 리스타트 : 서비스(프로세스)를 종료하고 다시 실행하는 방법
- 리로드 : 리스타트 없이 캐쉬된 정보를 제거하고 다시 읽는 방법

백엔드, 프론트엔드
- 백엔드 : 서비스 로직의 결과인 데이터를 잘 관리하기 위한 기술의 집합
- 프론트엔드 : 서비스 로직의 결과인 데이터를 잘 표현하기 위한 기술의 집합

UI, UX
- UI : 데이터와 기능을 편하게 구현하기 위한 경험
- UX : 누적된 UI 경험을 재사용 하기 위한 기술

뷰 리졸버
- 하나의 서비스 코드 실행 결과를 다양한 형태의 뷰로 표현하기 위한 동적 기능

섹션5

정보보보의 인증
- 내가 누군지 시스템에 알려주는 과정과 결과

정보보보의 접근제어
- 허락받은 사용자가 약속된 시간에 필요한 기능만 사용하게 하는 것

정보의 기밀성
- 허락받은 사람만 데이터를 이해할 수 있는 속성

정보의 무결성
- 만들어지고 보관된 데이터가 맞음을 보장하는 속성

정보의 가용성
- 허락받은 사용자가 약속된 시간에 필요한 기능만 사용할 수 있게 보장하는 것

정보보호의 관리적보안
- 정보보호에 대한 조직, 프로세스 등을 정의하고 이를 실행하는 노력

정보보호의 물리적보안
- 정보가 저장된 공간을 물리적으로 격리한 결과

정보보호의 기술적보안
- 정보가 저장되는 컴퓨터를 안전하게 하기 위한 솔류션

접근제어모델의 RBAC
- 역할과 권한을 분리하고 인증시 역할을 부여해 필요한 기능을 선언하는 모델

WAS의 세션
- 인증받은 사용자의 전용 객체를 보관할 수 있는 기능

부루투스공격
- 기밀성으로 감춰진 데이터를 알아내기 위해 랜덤한 값을 대량으로 입력하는 공격

메타데이터(메타정보)
- 데이터를 설명하는 데이터

어노테이션
- 개발자의 코드를 설명할 수 있는 메타

오류
- 잘못된 코드 또는 실행 환경의 문제로 발생하는 의도하지 않은 실행 결과

결함
- 사용자 요구사항을 충족시키지 못하는 SW 실행 결과

장애
- SW 가 실행되지 않거나 실행되더라도 의미가 없는 상황

check Exception
- 개발자의 코드로 컴파일 시점에 예외처리를 해야 하는 사용자 정의 Exception

uncheck Excepption
- 개발자의 코드로 예외처리를 안해도 되는 실행 시점에 발생되는 Runtime Exception

stasck trace
- 특정 쓰레드의 특정 시점에 사용한 메소드의 순서와 위치를 알 수 있는 로그 정보

브라우저의 쿠키
- WAS 가 브라우저를 구분하기 위해 심어둔 key value 형태의 정보

이중화
- 고 가용성을 위해 2개 이상의 시스템을 클러스터 환경으로 구성 서비스를 제공하는 기술

클러스터 서버
- 이중화 환경에서 필요한 공유데이터를 보관하는 서버

섹션6

SHA256
- 256 bit 크기를 출력하는 안전한 해쉬 알고리즘

해쉬의 솔트
- 레인보우 테이블 공격을 방어하기 위해 추가되는 데이터

해쉬의 레인보우테이블
- 공개된 해쉬 알고리즘을 사용 대량의 데이터를 생성하고 이를 통해 원래 정보를 알아내는 공격

JCE(Java Cryptography Extension)
- 검증되고 잘 사용되고 있는 암호화 기능을 모은 라이브러리

데이터의 블럭
- 특정 기능을 실행하기 위해 필요한 특정 데이터 크기

인코딩중 헥사 규칙
- 1BYTE 를 16 진수를 아스키 코드로 표현한 규칙

인코딩중 BASE64 규칙
- 1BYTE 를 키보드로 입력 가능한 64개의 문자로 표현한 규칙

비밀키 블록 암호화
- 보호된 비밀키와 검증된 암호화 알고리즘을 사용 가변길이 데이터를 블록단위로 암호화 하는 기술

디자인패턴의 팩토리 패턴
- 실행시전 필요한 객체 생성을 담당하는 팩토리 메소드와 이를 실행할 수 있는 기능을 제공하는 생성패턴

AES 암호화 알고리즘
- SPN 구조를 사용하는 고속, 저전력 비밀키 블록 암호화 알고리즘

ARIA 암호화 알고리즘
- Involutional SPN 구조를 사용하는 Academy(학계), Research Institute(연구소), Agency(정부 기관)의 첫 글자들을 딴 학·연·관의 공동 노력으로 만들어진 우리나라 비밀키 블록 암호화 알고리즘

PKCS5 (PKCS7) 패딩
- 블록의 비어있는 크기를 반복해서 채우는 패딩

충돌저항성
- 해쉬 알고리즘을 통과한 데이터는 서로 다른 값을 가지거나 연관성을 알 수 없는 속성

역상저항성
- 해쉬 연산의 결과를 가지고 원래 데이터를 알 수 없게 하는 속성

부인봉쇄
- 내가 한 작업의 결과를 다른 사람이 했다고 할 수 없게 만드는 속성

케르크호프스 원리
- 암호화 알고리즘의 비밀키를 제외한 모든내용이 공개되더라도 그 암호화 기술은 안전해야 한다는 규칙

블록암호화의 IV
- 운영모드 실행시 첫번째 암호화 블럭의 연관성을 부여하기 위한 약속된 정보

비밀키 암호화 알고리즘의 라운드키
- 암호화 키를 좀더 안전하게 사용하기 위해 암호화 라운드마다 규칙에 맞게 변경된 암호화키

3-tier 아키텍처
- WEB, WAS, DBMS 가 분리되어 유연성과 이식성, 성능을 높히기 위한 아키텍쳐

서비스의 토큰
- 시간제한과 횟수 제한, 인증정보를 포함하고 있는 데이터

암호화의 넌스
- 평문의 앞에 붙어 똑같은 평문이라 하더라도 다른 암호문을 만들어 낼 수 있는 랜덤한 데이터

엔디안
- 바이트가 메모리에 기록되는 순서

암호화 기술의 혼돈
- 원래 정보를 알 수 없게 만드는 속성

암호화 기술의 확산
- 인접한 정보임을 알 수 없게 만드는 속성

섹션7

병렬처리
- 2개 이상의 프로세스(쓰레드)가 전용 HW 를 점유해 동시에 실행되는 기술

병행처리
- 2개 이상의 프로세스(쓰레드)가 하나의 HW 를 점유하기 위해 순차적으로 실행되는 기술

YAML 파일
- 단순한 텍스트 규칙으로 계층구조, 배열 등의 데이터를 표현할 수 있는 문서

java의 properties
- 프로그램 실행에 필요한 정보가 저장되어 있고 CLASSPATH 를 통해 쉽게 찾을 수 있는 파일

로그레벨
- 개발자가 기록한 로그의 중요도를 메소드로 구분한 규칙

점유와 대기
- 특정 프로세스(쓰레드)가 임계영역을 실행할때 다른 프로세스(쓰레드)는 대기해야 하는 규칙

임계영역
- 특정 프로세스(쓰래드)가 다른 프로세스(쓰레드)에 방해 받지 않고 처리할 수 있는 명령어 집합

비선점
- 임계영역을 실행하고 있는 프로세스(쓰레드)는 다른 쓰레드가 중단 시킬 수 없는 규칙

상호배제
- 임계영역은 단 한개의 프로세스(쓰레드)만 사용할 수 있다는 규칙

스핀락
- 임계영역을 획득하기 위해 지속적으로 관찰하는 기법, 점유와 관찰

버퍼
- 데이터를 다른 장치로 전송하기 전 임시로 보관하는 공간

동기화
- 2개의 프로세스(쓰레드)가 임계영역을 사용하기 위한 순서를 결정하는 것

동기화의 세마포어, 뮤텍스
- 임계영역을 결정하는 변수, P 연산과 V 연산으로 동기화를 제어, 세마포어가 1개가 있을때 뮤텍스

동기화의 모니터
- 세마포어 또는 뮤텍스 사용의 복잡성을 개발자의 언어로 추상화 사용할 수 있게 해주는 기술

트레이드오프(상충점)
- 한 속성이 좋아지면 다른 속성이 나빠지는 서로 반대의 영향을 주는 관계

java의 final
- 상수를 선언할 수 있게 해주는 예약어, 컴파일 시점에 사용하는 클래스 내부에 코드가 복사됨

    목차 커뮤니티