반응형
백엔드 개발자 면접을 준비하실 때, 아래 내용을 참고하시면 좋습니다.(이전 블로그에 쓰던거 가져왔습니다)
기초적인 내용부터 심화된 주제까지 정리되어 있으니, 순서대로 학습하고 암기하시면 효과적일 것입니다!
"준비한 만큼, 아니 그 이상으로 잘 해내실 겁니다.
자신감을 가지고 최선을 다하세요!
당신의 합격을 진심으로 응원합니다!"
1. 객체 (Object)
- 뜻: 현실 세계의 사물이나 개념을 컴퓨터에서 표현한 것.
- 예시: 강아지를 프로그램으로 표현하면, 강아지의 이름, 나이(특성)와 짖는다, 뛴다(행동)가 있는 ‘객체’가 됩니다.
- 쉽게 말해: 현실의 사물을 컴퓨터 세계에서 만든 것.
2. 클래스 (Class)
- 뜻: 객체를 만들기 위한 ‘설계도’입니다.
- 예시: 강아지를 표현하기 위한 설계도가 클래스입니다. 여기에는 이름, 나이, 행동(짖기, 뛰기)이 적혀 있습니다. 이 설계도를 바탕으로 실제 강아지 객체를 만들 수 있습니다.
- 쉽게 말해: 객체를 만드는 ‘청사진’ 또는 ‘설계도’.
3. 메서드 (Method)
- 뜻: 객체가 할 수 있는 행동이나 기능을 코드로 표현한 것입니다.
- 예시: 강아지가 “짖는다”라는 행동은 메서드입니다.
- 쉽게 말해: 객체의 행동을 표현하는 ‘함수’입니다.
4. 속성 (Property) / 필드 (Field)뜻: 객체가 가지고 있는 특성이나 정보를 나타냅니다.
- 뜻 : 객체가 가지고 있는 특성이나 정보를 나타냅니다.
- 예시 : 강아지의 이름이나 나이는 ‘속성’입니다.
- 쉽게 말해: 객체가 가지고 있는 정보
5. 변수 (Variable)
- 뜻: 데이터를 저장하는 상자입니다. 값을 바꿀 수 있습니다.
- 예시: 강아지의 나이를 저장하는 상자를 age라는 변수라고 부릅니다.
- 쉽게 말해: 데이터를 저장하는 ‘저장소’.
6. 함수 (Function)
- 뜻: 어떤 동작을 수행하는 코드의 집합입니다.
- 예시: 두 숫자를 더하는 코드를 함수로 만들면, 필요할 때마다 호출해서 사용할 수 있습니다.
- 쉽게 말해: 하나의 동작을 수행하는 코드 덩어리.
7. 인스턴스 (Instance)
- 뜻: 클래스를 바탕으로 만들어진 실제 객체입니다.
- 예시: 강아지 클래스(설계도)를 사용해서 만들어진 ‘멍멍이’ 객체가 인스턴스입니다.
- 쉽게 말해: 클래스를 통해 만들어진 ‘진짜 객체’.
8. 상속 (Inheritance)
- 뜻: 기존의 클래스(부모 클래스)의 특성과 기능을 다른 클래스(자식 클래스)가 물려받는 것.
- 예시: “동물”이라는 부모 클래스에서 “강아지”와 “고양이” 클래스가 물려받아 사용할 수 있습니다.
- 쉽게 말해: 기존에 있는 기능을 ‘물려받는’ 것.
9. 생성자 (Constructor)
- 뜻: 객체를 만들 때(생성할 때) 자동으로 실행되는 메서드입니다.
- 예시: 강아지 객체를 만들 때 이름이나 나이를 설정하는 코드가 생성자입니다.
- 쉽게 말해: 객체를 만들 때 초기 설정을 해주는 기능.
10. 인터페이스 (Interface)
- 뜻: 클래스들이 공통으로 따라야 할 약속이나 규칙입니다.
- 예시: 여러 회사가 같은 규칙으로 전기를 생산하기로 약속하면, 기계가 쉽게 호환됩니다.
- 쉽게 말해: 지켜야 할 ‘규칙서’나 ‘약속’.
11. API (Application Programming Interface)
- 뜻: 프로그램이 서로 대화할 수 있도록 돕는 도구나 규칙입니다.
- 예시: 날씨 정보를 제공하는 API를 사용하면 날씨 정보를 쉽게 가져올 수 있습니다.
- 쉽게 말해: 프로그램이 서로 돕기 위해 쓰는 ‘중간 통로’.
12. 프레임워크 (Framework)
- 뜻: 프로그램을 만들기 쉽게 도와주는 틀이나 뼈대입니다.
- 예시: 스프링부트는 자바로 웹 프로그램을 만들 때 사용하는 프레임워크입니다.
- 쉽게 말해: 미리 만들어진 ‘뼈대’ 또는 ‘도구 세트’.
13. 라이브러리 (Library)
- 뜻: 자주 쓰는 기능을 모아둔 코드의 모음입니다.
- 예시: 버튼 클릭 기능, 데이터 처리 기능 등이 미리 만들어진 라이브러리입니다.
- 쉽게 말해: 기능이 이미 준비된 ‘도구 상자’.
14. 데이터베이스 (Database)
- 뜻: 데이터를 저장하고 관리하는 곳입니다.
- 예시: 학생들의 이름, 점수를 저장해 두는 곳이 데이터베이스입니다.
- 쉽게 말해: 정보를 저장하는 ‘창고’.
15. 쿼리 (Query)
- 뜻: 데이터베이스에서 정보를 가져오거나 바꿀 때 사용하는 요청입니다.
- 예시: “학생들의 점수를 보여줘”라고 요청하면 그게 쿼리입니다.
- 쉽게 말해: 데이터베이스에게 하는 ‘요청’.
16. 서버 (Server)
- 뜻: 다른 컴퓨터(클라이언트)에게 정보를 제공하는 컴퓨터입니다.
- 예시: 웹사이트를 열면 그 정보가 서버에서 제공됩니다.
- 쉽게 말해: 정보를 주는 ‘컴퓨터’.
17. 클라이언트 (Client)
- 뜻: 서버에게 정보를 요청하는 컴퓨터입니다.
- 예시: 내가 웹사이트를 열 때 사용하는 내 컴퓨터가 클라이언트입니다.
- 쉽게 말해: 정보를 받는 ‘사용자 컴퓨터’.
18. 배열 (Array)
- 뜻: 같은 종류의 데이터를 순서대로 저장하는 자료 구조입니다.
- 예시: [1, 2, 3, 4]와 같은 숫자들이 순서대로 저장된 것이 배열입니다.
- 쉽게 말해: 같은 종류의 데이터들이 줄 서 있는 ‘상자들’.
19. 리스트 (List)
- 뜻: 배열과 비슷하지만 더 자유롭게 데이터를 저장할 수 있는 자료 구조입니다.
- 예시: [사과, 바나나, 포도]처럼 데이터를 저장합니다.
- 쉽게 말해: 데이터를 저장하는 더 유연한 ‘줄’입니다.
20. 반복문 (Loop)
- 뜻: 똑같은 작업을 여러 번 반복해서 실행하게 하는 코드입니다.
- 예시: 1부터 10까지 숫자를 하나씩 출력하는 경우에 사용합니다.
- 쉽게 말해: 같은 일을 반복해서 하는 ‘기계적인 작업’.
21. 조건문 (Conditional Statement)
- 뜻: 특정 조건에 따라 다른 결과를 실행하는 코드입니다.
- 예시: “시험 점수가 60점 이상이면 합격, 아니면 불합격”을 판단하는 코드입니다.
- 쉽게 말해: ‘조건’을 검사해서 다음 행동을 정하는 것.
22. 연산자 (Operator)
- 뜻: 계산이나 비교를 할 때 사용하는 기호입니다.
- 예시: +(더하기), -(빼기), ==(같다), >(크다) 등이 있습니다.
- 쉽게 말해: 계산이나 비교를 돕는 ‘기호’.
23. 예외 (Exception)
- 뜻: 프로그램 실행 중에 문제가 생길 때 발생하는 에러입니다.
- 예시: 숫자를 0으로 나누면 프로그램이 멈추는데, 이를 예외라고 합니다.
- 쉽게 말해: 실행 중에 생기는 ‘에러’나 ‘문제’.
24. 디버깅 (Debugging)
- 뜻: 프로그램에서 오류나 문제를 찾아서 고치는 과정입니다.
- 예시: 프로그램이 실행되지 않는 이유를 찾아서 수정하는 과정입니다.
- 쉽게 말해: 문제를 찾고 고치는 ‘탐정’ 같은 일.
25. 빌드 (Build)
- 뜻: 작성한 코드를 실행할 수 있는 형태로 만드는 과정입니다.
- 예시: 스프링부트 프로젝트를 실행하기 위해 빌드를 합니다.
- 쉽게 말해: 코드를 완성해서 실행 준비를 하는 것.
26. 컴파일 (Compile)
- 뜻: 사람이 작성한 코드를 컴퓨터가 이해할 수 있는 형태로 바꾸는 과정입니다.
- 예시: 자바 코드를 컴퓨터가 이해하는 형태인 .class 파일로 만드는 것.
- 쉽게 말해: 코드를 번역하는 ‘통역사’ 역할.
27. 런타임 (Runtime)
- 뜻: 프로그램이 실행되고 있는 시간이나 상태입니다.
- 예시: 게임이 켜져서 플레이 중인 상태가 런타임입니다.
- 쉽게 말해: 프로그램이 ‘돌아가는 시간’.
28. 변경 불가능 (Immutable)
- 뜻: 한 번 만들어지면 변경할 수 없는 데이터입니다.
- 예시: String(문자열)은 한 번 만들어지면 바꿀 수 없습니다.
- 쉽게 말해: ‘변경할 수 없는 값’.
29. 참조 (Reference)
- 뜻: 변수가 다른 데이터를 가리키고 있는 상태입니다.
- 예시: 변수 a가 강아지 객체를 가리키고 있다면, 그게 참조입니다.
- 쉽게 말해: 데이터를 ‘가리키는 화살표’.
30. 스레드 (Thread)
- 뜻: 프로그램이 동시에 여러 작업을 할 수 있게 해주는 기능입니다.
- 예시: 게임에서 음악을 재생하면서 화면도 동시에 보여주는 것입니다.
- 쉽게 말해: ‘동시에 여러 작업’을 가능하게 하는 것.
31. 동기 (Synchronous)
- 뜻: 작업이 순서대로 진행되는 방식입니다.
- 예시: 물건을 하나씩 순서대로 만드는 공장.
- 쉽게 말해: ‘순서대로 하나씩’ 실행.
32. 비동기 (Asynchronous)
- 뜻: 작업이 동시에 진행될 수 있는 방식입니다.
- 예시: 한 명은 물건을 만들고, 다른 사람은 포장을 동시에 하는 상황.
- 쉽게 말해: ‘동시에 여러 작업’을 처리.
33. 로그 (Log)
- 뜻: 프로그램의 실행 기록이나 오류를 남긴 것입니다.
- 예시: “프로그램이 시작되었습니다”, “오류가 발생했습니다” 같은 기록.
- 쉽게 말해: 프로그램의 ‘일기장’ 같은 기록.
34. 요청 (Request) / 응답 (Response)
- 뜻: 클라이언트가 서버에게 정보를 달라고 하는 것을 요청, 서버가 대답해 주는 것을 응답이라고 합니다.
- 예시: 웹사이트에서 로그인 버튼을 누르면 서버에 로그인 정보를 요청하고, 서버가 성공 여부를 응답합니다.
- 쉽게 말해: 요청 = ‘부탁’, 응답 = ‘대답’.
35. 포트 (Port)
- 뜻: 컴퓨터가 데이터를 주고받기 위해 사용하는 문입니다.
- 예시: 스프링부트는 주로 8080번 포트를 사용합니다.
- 쉽게 말해: 데이터가 들어오고 나가는 ‘문’.
36. 컨트롤러 (Controller)
- 뜻: 사용자의 요청을 받아서 처리하는 역할을 하는 클래스입니다.
- 예시: 웹사이트의 로그인 버튼 클릭 요청을 처리하는 코드가 컨트롤러에 있습니다.
- 쉽게 말해: 요청을 받고 처리하는 ‘중간 관리자’.
37. 경로 (Path)
- 뜻: 파일이나 웹페이지가 어디에 있는지 알려주는 주소입니다.
- 예시: http://localhost:8080/home에서 /home이 경로입니다.
- 쉽게 말해: 파일이나 페이지의 ‘길’.
38. 의존성 (Dependency)
- 뜻: 어떤 코드나 클래스가 다른 코드나 기능을 필요로 할 때, 그 관계를 의존성이라고 합니다.
- 예시: A 클래스가 B 클래스를 사용하면 A는 B에 의존하고 있습니다.
- 쉽게 말해: 다른 코드에 "기대는 관계".
39. 의존성 주입 (Dependency Injection, DI)
- 뜻: 객체가 필요한 의존성을 스스로 만들지 않고 외부에서 주입받는 방식입니다.
- 예시: 스프링부트에서 @Autowired를 사용하면 객체가 외부에서 자동으로 주입됩니다.
- 쉽게 말해: 필요한 도구를 ‘필요할 때 외부에서 가져다 주는 것’.
40. 빈 (Bean)
- 뜻: 스프링이 관리하는 객체를 의미합니다.
- 예시: @Component 또는 @Service 같은 어노테이션을 붙이면 스프링이 그 객체를 Bean으로 관리합니다.
- 쉽게 말해: 스프링이 대신 관리해주는 ‘객체’.
41. 어노테이션 (Annotation)
- 뜻: 코드에 추가 정보를 붙이는 특수한 기호입니다.
- 예시: @SpringBootApplication, @GetMapping 등.
- 쉽게 말해: 코드에 ‘설명서’나 ‘명령어’를 붙이는 것.
42. REST (Representational State Transfer)
- 뜻: 웹에서 데이터를 주고받는 설계 방식입니다.
- 예시: URL을 통해 서버에 요청하고 데이터를 JSON이나 XML 형식으로 받는 방식입니다.
- 쉽게 말해: 웹에서 데이터를 주고받는 ‘규칙’.
43. REST API
- 뜻: REST 규칙을 따르는 API입니다.
- 예시: /api/users라는 URL을 통해 사용자 정보를 가져오는 요청이 REST API입니다.
- 쉽게 말해: REST 방식으로 서버에 요청을 보내고 데이터를 주고받는 ‘통로’.
44. HTTP (HyperText Transfer Protocol)
- 뜻: 웹에서 데이터를 주고받는 규칙입니다.
- 예시: 브라우저에서 웹사이트를 열면 HTTP를 통해 데이터를 받아옵니다.
- 쉽게 말해: 웹에서 소통하는 ‘약속된 규칙’.
45. HTTP 요청 메서드
- 뜻: 서버에 어떤 작업을 요청할 때 사용하는 방식입니다.
- GET: 데이터를 요청합니다.
- POST: 데이터를 추가합니다.
- PUT: 데이터를 수정합니다.
- DELETE: 데이터를 삭제합니다.
- 쉽게 말해: 서버에게 ‘어떤 일’을 할지 알려주는 명령어.
46. JSON (JavaScript Object Notation)
- 뜻: 데이터를 주고받을 때 사용하는 가벼운 형식입니다.
- 예시:
`{ "name": "John", "age": 25 }`
- 쉽게 말해: 데이터를 표현하는 ‘문법’.
47. 쿼리 파라미터 (Query Parameter)
- 뜻: URL 뒤에 붙어서 서버에 추가 정보를 전달하는 값입니다.
- 예시: http://example.com/users?id=1에서 id=1이 쿼리 파라미터입니다.
- 쉽게 말해: URL을 통해 서버에 보내는 ‘추가 정보’.
48. 경로 변수 (Path Variable)
- 뜻: URL의 특정 부분을 변수처럼 사용하는 것입니다.
- 예시: /users/{id}에서 {id}에 1이 들어가면 /users/1이 됩니다.
- 쉽게 말해: URL의 ‘변수’ 같은 부분.
49. 컨텍스트 (Context)
- 뜻: 프로그램이 실행되는 환경이나 주변 정보를 말합니다.
- 예시: 스프링에서 ApplicationContext는 모든 Bean과 설정을 관리하는 컨테이너입니다.
- 쉽게 말해: 실행 환경을 담은 ‘정보 꾸러미’.
50. 트랜잭션 (Transaction)
- 뜻: 데이터베이스 작업이 모두 성공하거나 모두 실패하게 만드는 단위 작업입니다.
- 예시: 돈을 이체할 때 한 계좌에서 출금하고 다른 계좌에 입금이 모두 성공해야 합니다.
- 쉽게 말해: ‘모두 성공’ 또는 ‘모두 실패’를 보장하는 작업.
51. 커밋 (Commit)
- 뜻: 데이터베이스에 변경 사항을 확정하는 작업입니다.
- 예시: 데이터베이스에 정보를 저장하고 확정하는 순간입니다.
- 쉽게 말해: 데이터를 ‘저장’하는 확정 버튼.
52. 롤백 (Rollback)
- 뜻: 데이터베이스에서 작업을 취소하고 원래 상태로 되돌리는 것입니다.
- 예시: 오류가 나면 변경 사항을 취소하고 데이터베이스를 원래대로 되돌립니다.
- 쉽게 말해: 잘못된 작업을 ‘되돌리기’.
53. 캐시 (Cache)
- 뜻: 자주 사용하는 데이터를 빠르게 접근할 수 있도록 임시로 저장하는 공간입니다.
- 예시: 웹사이트에서 자주 열어보는 이미지나 정보가 캐시에 저장됩니다.
- 쉽게 말해: 자주 쓰는 데이터를 저장하는 ‘임시 저장소’.
54. DTO (Data Transfer Object)
- 뜻: 데이터를 전송할 때 사용하는 객체입니다.
- 예시: 클라이언트와 서버가 데이터를 주고받을 때 중간에 사용하는 객체입니다.
- 쉽게 말해: 데이터를 옮기는 ‘전달용 상자’.
55. VO (Value Object)
- 뜻: 값만을 저장하기 위해 사용하는 객체입니다. 변경되지 않는 데이터에 주로 사용됩니다.
- 예시: 사용자 주소나 좌표를 저장하는 객체.
- 쉽게 말해: 값만 담고 있는 ‘변경 불가능한 상자’.
56. 레포지토리 (Repository)
- 뜻: 데이터베이스에 접근해서 데이터를 가져오거나 저장하는 역할을 하는 클래스입니다.
- 예시: UserRepository라는 이름의 클래스를 만들어 데이터베이스와 소통합니다.
- 쉽게 말해: 데이터와 소통하는 ‘창고 관리자’.
57. 프록시 (Proxy)
- 뜻: 다른 객체를 대신해서 동작하는 중간 대리자 객체입니다.
- 예시: 스프링 AOP에서 실제 객체 대신 프록시 객체를 만들어 기능을 추가하거나 관리합니다.
- 쉽게 말해: 대신해서 행동하는 ‘대리인’.
58. AOP (Aspect Oriented Programming)
- 뜻: 반복되는 코드(공통 기능)를 별도로 분리해 관리하는 프로그래밍 기법입니다.
- 예시: 로깅, 트랜잭션 관리 같은 공통 기능을 분리해 개발합니다.
- 쉽게 말해: ‘반복되는 부분’을 깔끔하게 따로 정리하는 기법.
59. IOC (Inversion of Control)
- 뜻: 객체의 생성과 관리를 개발자가 아닌 스프링이 대신하는 원칙입니다.
- 예시: 개발자가 직접 객체를 생성하지 않고 스프링이 자동으로 관리해 줍니다.
- 쉽게 말해: 객체의 제어권을 스프링에게 넘기는 것.
60. 스프링 컨테이너 (Spring Container)
- 뜻: 스프링이 객체(Bean)를 관리하는 공간입니다.
- 예시: ApplicationContext가 대표적인 스프링 컨테이너입니다.
- 쉽게 말해: 스프링이 객체를 ‘관리하는 상자’.
61. JPA (Java Persistence API)
- 뜻: 자바에서 데이터베이스와 쉽게 소통할 수 있게 해주는 인터페이스입니다.
- 예시: JPA를 사용하면 SQL 대신 객체로 데이터베이스 작업을 할 수 있습니다.
- 쉽게 말해: 데이터를 DB에 넣고 꺼내는 ‘간편 도구’.
62. ORM (Object Relational Mapping)
- 뜻: 객체와 데이터베이스 테이블을 연결해주는 기술입니다.
- 예시: JPA나 Hibernate가 대표적인 ORM 도구입니다.
- 쉽게 말해: 객체와 데이터베이스를 ‘자동으로 연결’해 주는 것.
63. 트리거 (Trigger)
- 뜻: 데이터베이스에서 특정 조건이 만족되면 자동으로 실행되는 작업입니다.
- 예시: 회원이 삭제되면 자동으로 관련 데이터를 삭제하는 작업.
- 쉽게 말해: 조건이 맞으면 자동으로 실행되는 ‘자동 기능’.
64. 시드 데이터 (Seed Data)
- 뜻: 초기 설정을 위해 미리 넣어두는 데이터입니다.
- 예시: 애플리케이션 시작 시 필수로 필요한 기본 데이터.
- 쉽게 말해: 프로그램 시작에 필요한 ‘기본 데이터’.
65. CRUD (Create, Read, Update, Delete)
- 뜻: 데이터베이스에서 데이터를 만들고, 조회하고, 수정하고, 삭제하는 작업입니다.
- 예시: 게시판의 글을 작성(C), 읽기(R), 수정(U), 삭제(D)하는 기능.
- 쉽게 말해: 데이터의 ‘기본 작업 네 가지’.
66. 페이징 (Paging)
- 뜻: 데이터를 여러 페이지로 나눠서 보여주는 기능입니다.
- 예시: 게시판에서 글이 많으면 10개씩 나눠서 페이지를 보여줍니다.
- 쉽게 말해: 데이터를 ‘페이지 단위로 나누는 기능’.
67. 커스텀 (Custom)
- 뜻: 기본 제공 기능이 아닌 사용자가 직접 만든 기능입니다.
- 예시: 기본 로그인 기능 대신 내가 직접 만든 로그인 기능.
- 쉽게 말해: 내가 원하는 대로 ‘직접 만든 기능’.
68. 컨피그레이션 (Configuration)
- 뜻: 스프링의 설정을 코드로 관리하는 클래스입니다.
- 예시: @Configuration을 붙여 설정 클래스를 만듭니다.
- 쉽게 말해: 프로그램의 설정을 모아둔 ‘설정 파일’.
69. 싱글톤 패턴 (Singleton Pattern)
- 뜻: 객체를 단 하나만 생성해 사용하는 디자인 패턴입니다.
- 예시: 스프링 Bean은 기본적으로 싱글톤 패턴입니다.
- 쉽게 말해: 객체를 딱 한 번만 만드는 규칙.
70. 핸들러 (Handler)
- 뜻: 사용자의 요청을 처리하는 코드입니다.
- 예시: 웹 요청을 받고 어떤 기능을 실행할지 결정하는 역할.
- 쉽게 말해: 요청을 ‘처리하는 담당자’.
71. 미들웨어 (Middleware)
- 뜻: 클라이언트와 서버 사이에서 중간 역할을 하는 소프트웨어입니다.
- 예시: 서버 요청을 처리하기 전에 필터링하거나 변환하는 역할을 합니다.
- 쉽게 말해: 중간에서 요청을 ‘관리하는 도우미’.
72. 로컬 (Local)
- 뜻: 현재 내가 작업 중인 컴퓨터나 환경입니다.
- 예시: 내 컴퓨터에서 스프링부트를 실행하면 로컬 환경입니다.
- 쉽게 말해: ‘내 컴퓨터 환경’.
73. 배포 (Deployment)
- 뜻: 개발이 끝난 프로그램을 실제 서버에 올려서 실행하는 작업입니다.
- 예시: AWS나 네이버 클라우드에 프로그램을 올려서 사용자들이 사용할 수 있게 만드는 것.
- 쉽게 말해: 프로그램을 ‘세상에 내놓는 과정’.
74. 로드 밸런서 (Load Balancer)
- 뜻: 여러 서버에 요청을 나눠서 처리하는 역할을 합니다.
- 예시: 사용자가 많을 때 여러 서버에 균등하게 요청을 분산합니다.
- 쉽게 말해: 서버의 ‘부하를 나눠주는 관리자’.
75. CORS (Cross-Origin Resource Sharing)
- 뜻: 서로 다른 출처(도메인) 간에 데이터를 주고받을 때 발생하는 보안 문제와 그 해결 방법입니다.
- 예시: 다른 서버에서 데이터를 가져올 때 보안 오류를 방지합니다.
- 쉽게 말해: 다른 주소에서 데이터를 ‘안전하게 주고받는 규칙’.
76. JWT (JSON Web Token)
- 뜻: 사용자의 인증 정보를 안전하게 주고받을 때 사용하는 토큰입니다.
- 예시: 로그인한 사용자의 정보를 서버와 주고받을 때 JWT를 사용합니다.
- 쉽게 말해: 로그인 정보를 담은 ‘안전한 열쇠’.
77. 스프링 시큐리티 (Spring Security)
- 뜻: 스프링 애플리케이션의 보안을 책임지는 프레임워크입니다.
- 예시: 로그인, 권한 관리, 비밀번호 암호화 등을 제공.
- 쉽게 말해: 애플리케이션을 ‘안전하게 지켜주는 도구’.
78. CICD (Continuous Integration and Continuous Deployment)
- 뜻: 코드 작성부터 배포까지 자동화해주는 개발 프로세스입니다.
- 예시: GitHub Actions, Jenkins 같은 도구를 사용해 코드를 자동 빌드하고 배포.
- 쉽게 말해: 개발과 배포를 ‘자동으로 빠르게 처리하는 시스템’.
79. Git
- 뜻: 소스 코드의 변경 이력을 관리하는 버전 관리 시스템입니다.
- 예시: 여러 명이 협업하면서 코드를 저장하고 수정할 때 Git을 사용.
- 쉽게 말해: 코드를 ‘버전별로 저장하는 도구’.
80. GitHub/GitLab/Bitbucket
- 뜻: Git으로 관리하는 코드를 저장하고 공유할 수 있는 원격 저장소 서비스입니다.
- 예시: 팀 프로젝트에서 코드를 공유하고 협업합니다.
- 쉽게 말해: 코드를 저장하고 협업하는 ‘온라인 코드 저장소’.
81. 리팩토링 (Refactoring)
- 뜻: 기능은 유지하면서 코드를 더 깔끔하고 효율적으로 고치는 작업입니다.
- 예시: 중복된 코드를 제거하거나 가독성을 높이기 위해 코드 구조를 개선합니다.
- 쉽게 말해: 코드를 ‘예쁘고 효율적으로 정리하는 작업’.
82. 마이크로서비스 아키텍처 (Microservice Architecture, MSA)
- 뜻: 큰 시스템을 여러 개의 작은 서비스로 나누어 독립적으로 개발하고 운영하는 아키텍처입니다.
- 예시: 쇼핑몰 시스템을 주문 서비스, 결제 서비스, 배송 서비스로 나누어 개발.
- 쉽게 말해: 큰 시스템을 ‘작은 조각’으로 나눠 관리하는 방식.
83. 로드맵 (Roadmap)
- 뜻: 개발자가 목표를 이루기 위해 단계별로 학습하거나 진행해야 할 계획입니다.
- 예시: 스프링부트 로드맵에는 자바 기초, JPA, 테스트, 배포 등 단계가 포함됩니다.
- 쉽게 말해: 배우고 개발할 내용을 정리한 ‘계획표’.
84. 테스트 코드 (Test Code)
- 뜻: 작성한 코드가 제대로 작동하는지 확인하기 위해 만든 코드입니다.
- 예시: JUnit이나 Mockito를 사용해 기능이 정상인지 테스트.
- 쉽게 말해: 프로그램이 ‘제대로 작동하는지 확인하는 코드’.
85. 모놀리식 아키텍처 (Monolithic Architecture)
- 뜻: 모든 기능이 하나의 큰 시스템 안에서 실행되는 구조입니다.
- 예시: 웹 애플리케이션이 로그인, 결제, 배송 등을 모두 하나로 통합.
- 쉽게 말해: 하나의 큰 덩어리로 운영되는 시스템.
86. Docker (도커)
- 뜻: 애플리케이션과 필요한 환경을 ‘컨테이너’라는 가벼운 형태로 묶어 실행하는 도구입니다.
- 예시: 스프링부트 애플리케이션을 어디서나 실행할 수 있게 컨테이너로 만듭니다.
- 쉽게 말해: 프로그램과 환경을 ‘한 상자에 담아 실행하는 도구’.
87. 쿠버네티스 (Kubernetes)
- 뜻: 여러 개의 도커 컨테이너를 관리하고 자동으로 배포하는 시스템입니다.
- 예시: AWS, GCP에서 컨테이너를 여러 서버에 분산 배포합니다.
- 쉽게 말해: 여러 ‘컨테이너’를 자동으로 배포하고 관리하는 시스템.
88. API 게이트웨이 (API Gateway)
- 뜻: 여러 서비스의 API를 하나로 묶어 클라이언트에게 제공하는 관문 역할입니다.
- 예시: 마이크로서비스의 여러 API를 하나의 진입점으로 통합합니다.
- 쉽게 말해: 여러 서비스의 API를 모아서 ‘하나의 문’처럼 제공.
89. SSL/TLS
- 뜻: 데이터를 암호화해서 안전하게 주고받는 프로토콜입니다.
- 예시: HTTPS로 데이터를 전송할 때 SSL/TLS를 사용해 보안 통신을 합니다.
- 쉽게 말해: 데이터를 ‘안전하게 암호화해서 보내는 규칙’.
90. OAuth (오픈 인증)
- 뜻: 외부 서비스(구글, 네이버 등)를 통해 로그인할 수 있도록 해주는 인증 방식입니다.
- 예시: “구글 계정으로 로그인” 버튼이 OAuth를 사용합니다.
- 쉽게 말해: 외부 계정으로 ‘간편하게 로그인하는 방식’.
91. 웹소켓 (WebSocket)
- 뜻: 서버와 클라이언트가 실시간으로 데이터를 주고받을 수 있도록 해주는 통신 방식입니다.
- 예시: 채팅 애플리케이션에서 실시간 메시지 전송을 위해 사용.
- 쉽게 말해: 실시간으로 데이터를 ‘주고받는 통로’.
92. 필터 (Filter)
- 뜻: 웹 요청이나 응답을 가로채서 중간에 처리하는 기능입니다.
- 예시: 로그인 검사를 필터로 만들어 요청이 들어오면 검사합니다.
- 쉽게 말해: 요청과 응답을 ‘중간에서 검사하고 수정하는 도구’.
93. 인터셉터 (Interceptor)
- 뜻: 웹 요청이 컨트롤러에 도달하기 전에 가로채서 특정 작업을 수행하는 기능입니다.
- 예시: 요청이 올 때마다 로그를 남기거나 권한을 검사하는 기능.
- 쉽게 말해: 요청을 ‘가로채서 처리하는 도구’.
94. CDN (Content Delivery Network)
- 뜻: 전 세계 여러 서버에 데이터를 분산시켜 사용자에게 더 빠르게 제공하는 기술입니다.
- 예시: 이미지, 동영상을 빠르게 보여주기 위해 CDN을 사용합니다.
- 쉽게 말해: 데이터를 ‘가장 가까운 서버’에서 빠르게 제공하는 시스템.
95. 배치 작업 (Batch Processing)
- 뜻: 특정 시간에 반복적으로 실행되는 작업입니다.
- 예시: 매일 새벽에 회원 데이터를 정리하거나 보고서를 생성하는 작업.
- 쉽게 말해: 주기적으로 자동으로 실행되는 ‘일괄 작업’.
96. 애자일 (Agile)
- 뜻: 소프트웨어를 빠르게 개발하고 주기적으로 점검하며 개선하는 방법론입니다.
- 예시: 기능을 조금씩 개발하고 지속적으로 피드백을 받아 개선합니다.
- 쉽게 말해: ‘빠르게 개발하고 자주 점검하는 방법론’.
97. 스프린트 (Sprint)
- 뜻: 애자일 방법론에서 정해진 기간 동안 집중해서 기능을 개발하는 단위입니다.
- 예시: 2주 동안 로그인 기능과 게시판 기능을 개발하는 작업 기간.
- 쉽게 말해: ‘짧은 기간의 집중 개발’.
98. 리눅스 (Linux)
- 뜻: 오픈소스로 제공되는 운영체제(OS)입니다. 서버 환경에서 많이 사용됩니다.
- 예시: 스프링부트 애플리케이션을 리눅스 서버에 배포합니다.
- 쉽게 말해: 서버에서 많이 쓰이는 ‘무료 운영체제’.
99. 스레드 풀 (Thread Pool)
- 뜻: 여러 스레드를 미리 만들어 두고 필요할 때 재사용하는 기술입니다.
- 예시: 웹 서버에서 많은 요청을 처리하기 위해 스레드 풀을 사용합니다.
- 쉽게 말해: 스레드를 ‘재사용해서 성능을 높이는 기술’.
100. 파이프라인 (Pipeline)
- 뜻: 소프트웨어 개발 및 배포 과정의 작업 흐름입니다.
- 예시: 코드 작성 → 테스트 → 빌드 → 배포 과정을 자동화한 흐름.
- 쉽게 말해: 작업을 단계별로 처리하는 ‘자동화된 흐름’.
101. 레거시 코드 (Legacy Code)
- 뜻: 오래된 시스템이나 유지보수하기 어려운 기존 코드입니다.
- 예시: 10년 전에 작성된 코드나 문서화가 부족한 코드.
- 쉽게 말해: ‘오래된 코드’, 또는 ‘유지보수하기 어려운 코드’.
102. 풀 리퀘스트 (Pull Request, PR)
- 뜻: 코드 수정 내용을 검토받기 위해 팀원에게 요청하는 것.
- 예시: GitHub에서 내가 수정한 코드에 대한 검토를 요청합니다.
- 쉽게 말해: ‘내 코드를 봐주세요’라고 요청하는 과정.
103. 머지 (Merge)
- 뜻: 여러 코드 변경 사항을 하나로 합치는 작업입니다.
- 예시: PR이 승인되면 메인 코드에 합칩니다.
- 쉽게 말해: ‘코드를 합치는 작업’.
104. 하드 코딩 (Hard Coding)
- 뜻: 코드에 값을 고정으로 직접 입력하는 방식입니다.
- 예시: 비밀번호를 코드에 직접 작성하는 경우.
- 쉽게 말해: 값이 코드에 ‘딱 박혀 있는 상태’.
105. 리소스 (Resource)
- 뜻: 프로그램이 사용해야 하는 파일, 메모리, CPU, 네트워크 등을 뜻합니다.
- 예시: 이미지 파일, 데이터베이스 연결, 메모리 등.
- 쉽게 말해: 프로그램이 필요로 하는 ‘자원들’.
106. 로드 타임 (Load Time)
- 뜻: 프로그램이나 웹 페이지가 실행되기까지 걸리는 시간입니다.
- 예시: 웹 페이지가 열릴 때 로딩되는 시간.
- 쉽게 말해: ‘불러오는 데 걸리는 시간’.
107. 옵티마이징 (Optimizing)
- 뜻: 프로그램의 속도, 성능을 개선하는 작업입니다.
- 예시: 코드 실행 시간을 줄이거나 메모리 사용량을 최적화합니다.
- 쉽게 말해: 프로그램을 더 ‘빠르고 효율적으로 만드는 작업’.
108. 메모리 누수 (Memory Leak)
- 뜻: 사용한 메모리를 제대로 반환하지 않아 메모리가 부족해지는 문제입니다.
- 예시: 객체를 계속 생성하고 제거하지 않아서 메모리가 차는 상황.
- 쉽게 말해: 메모리를 쓰고 ‘반환하지 않아 생기는 문제’.
109. 가비지 컬렉션 (Garbage Collection, GC)
- 뜻: 더 이상 사용하지 않는 메모리를 자동으로 정리하는 기능입니다.
- 예시: 자바는 가비지 컬렉션이 자동으로 불필요한 객체를 정리합니다.
- 쉽게 말해: 필요 없는 메모리를 ‘자동으로 청소해주는 기능’.
110. 이벤트 드리븐 (Event-Driven)
- 뜻: 특정 이벤트(동작)가 발생하면 동작하는 프로그래밍 방식입니다.
- 예시: 버튼 클릭 이벤트가 발생하면 특정 기능이 실행됩니다.
- 쉽게 말해: ‘이벤트에 반응하는 방식’.
111. 헬스 체크 (Health Check)
- 뜻: 서버나 애플리케이션이 정상 작동하는지 확인하는 작업입니다.
- 예시: 서버가 살아있는지 1분마다 자동으로 확인합니다.
- 쉽게 말해: 시스템의 ‘건강 상태’를 확인하는 작업.
112. API 레이트 리미팅 (Rate Limiting)
- 뜻: 사용자가 일정 시간 내에 너무 많은 요청을 보내지 못하도록 제한하는 기능입니다.
- 예시: 초당 10번만 요청을 허용합니다.
- 쉽게 말해: ‘너무 많은 요청을 막는 안전장치’.
113. 로드 (Load)
- 뜻: 시스템이나 서버가 처리해야 하는 작업량입니다.
- 예시: 사용자가 동시에 많이 접속하면 서버에 로드가 증가합니다.
- 쉽게 말해: 서버에 걸리는 ‘부하’나 ‘작업량’.
114. 스케일 업 (Scale-Up)
- 뜻: 하나의 서버의 성능(메모리, CPU)을 높여 시스템을 확장하는 방법입니다.
- 예시: 기존 서버의 CPU나 RAM 용량을 늘리는 방식.
- 쉽게 말해: 한 대의 서버를 ‘더 강하게 만드는 확장’.
115. 스케일 아웃 (Scale-Out)
- 뜻: 여러 대의 서버를 추가해 시스템을 확장하는 방법입니다.
- 예시: 서버를 여러 대 추가해서 동시에 처리할 수 있도록 설정합니다.
- 쉽게 말해: 서버를 ‘가로로 늘리는 확장’.
116. 풀 테이블 스캔 (Full Table Scan)
- 뜻: 데이터베이스의 테이블 전체를 조회하는 비효율적인 작업입니다.
- 예시: 인덱스 없이 조건 검색을 하면 테이블 전체를 뒤집어봅니다.
- 쉽게 말해: 데이터를 ‘한 줄씩 전부 확인하는 작업’.
117. 인덱스 (Index)
- 뜻: 데이터베이스에서 데이터를 빠르게 찾을 수 있도록 도와주는 자료 구조입니다.
- 예시: 책의 목차처럼 원하는 데이터를 빠르게 찾습니다.
- 쉽게 말해: 데이터를 찾기 위한 ‘목차’나 ‘색인’.
118. 쿼리 최적화 (Query Optimization)
- 뜻: 데이터베이스 쿼리의 실행 속도와 성능을 개선하는 작업입니다.
- 예시: 불필요한 조건을 줄이고 인덱스를 사용합니다.
- 쉽게 말해: 데이터를 ‘더 빠르게 가져오는 방법을 개선’.
119. 커넥션 풀 (Connection Pool)
- 뜻: 데이터베이스와의 연결을 미리 만들어두고 재사용하는 기능입니다.
- 예시: 매번 DB 연결을 생성하지 않고 미리 준비된 연결을 사용합니다.
- 쉽게 말해: 데이터베이스 연결을 ‘미리 만들어놓고 재활용’.
120. 캐시 히트 (Cache Hit)
- 뜻: 요청한 데이터가 캐시에 이미 저장되어 있어 빠르게 가져오는 상태입니다.
- 예시: 자주 요청되는 데이터를 캐시에 저장해 성능을 높입니다.
- 쉽게 말해: 데이터가 ‘캐시에 딱 준비되어 있는 상태’.
121. 캐시 미스 (Cache Miss)
- 뜻: 요청한 데이터가 캐시에 없어서 원본 데이터베이스에서 가져오는 상태입니다.
- 예시: 캐시에 데이터가 없으면 느리게 원본에서 데이터를 가져옵니다.
- 쉽게 말해: 데이터가 ‘캐시에 없어서 원본에서 가져오는 상태’.
122. 레이트 리미터 (Rate Limiter)
- 뜻: 시스템이 특정 시간 동안 처리할 수 있는 요청 수를 제한하는 기능입니다.
- 예시: 초당 최대 10개의 요청만 처리하도록 설정합니다.
- 쉽게 말해: 너무 많은 요청을 ‘막아주는 안전장치’.
123. 샤딩 (Sharding)
- 뜻: 데이터베이스를 여러 개로 나누어 저장해 성능을 높이는 방법입니다.
- 예시: 사용자 데이터를 이름에 따라 여러 DB에 분산 저장합니다.
- 쉽게 말해: 데이터를 ‘나누어 저장해서 빠르게 처리하는 방법’.
124. 레플리케이션 (Replication)
- 뜻: 데이터를 다른 데이터베이스에 복제해 여러 복사본을 유지하는 방법입니다.
- 예시: 읽기 작업은 복제된 데이터베이스에서 처리해 성능을 높입니다.
- 쉽게 말해: 데이터를 ‘여러 곳에 복사해서 안전하게 보관’.
125. 싱글 포인트 오브 페일러 (SPOF, Single Point of Failure)
- 뜻: 시스템에서 하나의 요소가 고장 나면 전체 시스템이 멈추는 약점입니다.
- 예시: 데이터베이스 하나만 사용하면 해당 DB가 죽을 경우 전체 서비스가 멈춥니다.
- 쉽게 말해: 시스템의 ‘약한 고리’.
126. HA (High Availability)
- 뜻: 시스템이 장애 없이 계속해서 운영될 수 있도록 보장하는 설계입니다.
- 예시: 여러 서버를 설정해 하나가 다운되면 다른 서버가 대신 처리합니다.
- 쉽게 말해: 시스템을 ‘항상 가용하게 유지하는 것’.
127. 파티셔닝 (Partitioning)
- 뜻: 데이터를 나누어 관리하는 기술입니다.
- 예시: 큰 테이블을 날짜나 ID 기준으로 나누어 관리합니다.
- 쉽게 말해: 데이터를 ‘여러 부분으로 나누는 기술’.
128. 블루/그린 배포 (Blue/Green Deployment)
- 뜻: 배포 시 기존 버전(Blue)과 새 버전(Green)을 동시에 유지해 무중단 배포하는 방법입니다.
- 예시: 새 버전이 문제가 없으면 트래픽을 새로운 서버로 전환합니다.
- 쉽게 말해: 기존 버전과 새 버전을 ‘안전하게 교체하는 배포 방식’.
129. 롤링 업데이트 (Rolling Update)
- 뜻: 시스템의 일부 서버만 업데이트하면서 점진적으로 배포하는 방식입니다.
- 예시: 10대의 서버 중 2대씩만 새 버전으로 업데이트합니다.
- 쉽게 말해: 서버를 ‘조금씩 업데이트해서 안정적으로 배포’.
130. Failover (페일오버)
- 뜻: 주 서버에 장애가 발생하면 백업 서버로 자동 전환하는 기능입니다.
- 예시: 데이터베이스가 죽으면 복제된 데이터베이스로 전환됩니다.
- 쉽게 말해: 문제가 생기면 ‘자동으로 다른 서버로 넘어가는 기능’.
131. CQRS (Command Query Responsibility Segregation)
- 뜻: 명령(데이터 변경)과 조회(데이터 읽기)를 분리해 시스템의 성능을 최적화하는 아키텍처 패턴입니다.
- 예시: 쓰기와 읽기 요청을 다른 데이터베이스나 로직으로 처리합니다.
- 쉽게 말해: 데이터를 ‘읽기’와 ‘쓰기’로 나눠서 효율적으로 처리하는 방식.
132. 이벤트 소싱 (Event Sourcing)
- 뜻: 데이터의 상태를 변경하는 이벤트를 기록하고, 이 기록을 바탕으로 상태를 복원하는 방법입니다.
- 예시: 계좌 이체 기록(입금, 출금)을 이벤트로 저장해 나중에 상태를 재생성합니다.
- 쉽게 말해: 데이터를 변경하는 과정을 기록하고 나중에 재생하는 기술.
133. API 라우팅 (Routing)
- 뜻: 클라이언트의 요청 URL에 따라 적절한 핸들러나 서비스로 연결해주는 기능입니다.
- 예시: /users 요청은 사용자 컨트롤러로 전달합니다.
- 쉽게 말해: 요청을 알맞은 경로로 연결해 주는 것.
134. 헤더 (Header)
- 뜻: HTTP 요청이나 응답에 포함되는 메타정보입니다.
- 예시: Authorization 헤더에 JWT 토큰을 담아 인증합니다.
- 쉽게 말해: 요청과 응답에 필요한 ‘추가 정보’.
135. 페이로드 (Payload)
- 뜻: HTTP 요청이나 응답 본문에 담기는 실제 데이터입니다.
- 예시: JSON 형식으로 데이터를 요청 본문에 담아 서버에 전송합니다.
- 쉽게 말해: 데이터를 담아서 보내는 본문 내용.
136. HTTPS (HyperText Transfer Protocol Secure)
- 뜻: HTTP에 SSL/TLS 암호화를 더해 보안을 강화한 프로토콜입니다.
- 예시: 브라우저 주소창에 https://로 시작하는 사이트는 안전하게 통신합니다.
- 쉽게 말해: 데이터를 암호화해서 주고받는 보안 프로토콜.
137. DNS (Domain Name System)
- 뜻: 사람이 이해할 수 있는 도메인 주소를 IP 주소로 변환하는 시스템입니다.
- 예시: www.example.com을 192.168.1.1 같은 IP 주소로 변환합니다.
- 쉽게 말해: 도메인을 IP 주소로 바꿔주는 전화번호부.
138. 타임아웃 (Timeout)
- 뜻: 서버나 클라이언트의 요청이나 응답이 일정 시간 동안 완료되지 않았을 때 연결을 끊는 기능입니다.
- 예시: 서버 응답이 5초 안에 오지 않으면 타임아웃 처리.
- 쉽게 말해: 기다리다 시간이 지나면 끊는 기능.
139. 백프레셔 (Backpressure)
- 뜻: 시스템의 처리량이 한계에 도달했을 때, 초과된 요청을 조절하거나 제한하는 메커니즘입니다.
- 예시: 요청이 너무 많으면 일부를 지연하거나 거절합니다.
- 쉽게 말해: 과도한 요청을 막고 시스템을 보호하는 ‘안전장치’.
140. 헥사고날 아키텍처 (Hexagonal Architecture)
- 뜻: 애플리케이션의 비즈니스 로직과 외부 시스템(데이터베이스, API)을 분리해 의존성을 줄이는 아키텍처입니다.
- 예시: 서비스 로직과 데이터베이스 코드를 분리해 확장성 높임.
- 쉽게 말해: 코드가 서로 ‘덜 의존하게 만드는 구조’.
141. 테일러링 (Tailing Logs)
- 뜻: 실시간으로 로그 파일을 확인하는 작업입니다.
- 예시: tail -f 명령어로 서버 로그를 실시간으로 모니터링합니다.
- 쉽게 말해: 실시간 로그를 지켜보는 작업.
142. 모니터링 (Monitoring)
- 뜻: 시스템의 성능, 오류, 트래픽 상태를 지속적으로 확인하는 작업입니다.
- 예시: Prometheus, Grafana를 사용해 서버 상태를 시각화합니다.
- 쉽게 말해: 시스템의 건강 상태를 확인하는 도구.
143. 리스너 (Listener)
- 뜻: 특정 이벤트를 감지하고 반응하는 기능입니다.
- 예시: 사용자가 버튼을 클릭했을 때 이벤트 리스너가 작동합니다.
- 쉽게 말해: 이벤트를 듣고 반응하는 역할.
144. 배치 처리 (Batch Processing)
- 뜻: 대량의 데이터를 주기적으로 처리하는 방식입니다.
- 예시: 하루에 한 번 이메일을 대량으로 보내는 작업.
- 쉽게 말해: 데이터를 한꺼번에 처리하는 일괄 작업.
145. 타임스템프 (Timestamp)
- 뜻: 데이터를 저장하거나 처리할 때 기록된 시간입니다.
- 예시: 데이터베이스의 created_at 필드에 시간 기록.
- 쉽게 말해: 데이터에 시간을 찍어두는 기능.
146. 하트비트 (Heartbeat)
- 뜻: 서버나 시스템이 정상 작동하는지 확인하기 위해 주기적으로 보내는 신호입니다.
- 예시: 서버가 1분마다 하트비트 신호를 보내 정상 여부를 확인합니다.
- 쉽게 말해: 시스템의 "살아있음"을 확인하는 신호.
147. 쿠키 (Cookie)
- 뜻: 클라이언트의 브라우저에 저장되는 작은 데이터입니다.
- 예시: 로그인 상태를 유지하기 위해 쿠키에 사용자 정보를 저장합니다.
- 쉽게 말해: 클라이언트에 저장된 작은 정보.
148. 세션 (Session)
- 뜻: 서버와 클라이언트 간의 연결 상태를 유지하는 방법입니다.
- 예시: 사용자가 로그인하면 세션을 생성해 로그인 상태를 유지합니다.
- 쉽게 말해: 서버와 클라이언트의 연결된 상태 정보.
149. Idempotency (멱등성)
- 뜻: 같은 요청을 여러 번 보내도 결과가 항상 동일한 성질입니다.
- 예시: 결제 시스템에서 같은 요청이 두 번 전송되어도 돈이 한 번만 빠져나가야 함.
- 쉽게 말해: "같은 요청은 한 번만 처리한 것과 똑같다"라는 성질.
- 실무: 결제 API, 데이터베이스 업데이트 시 중요합니다.
150. Sticky Session (스티키 세션)
- 뜻: 같은 사용자의 요청을 항상 같은 서버로 보내도록 유지하는 기법입니다.
- 예시: 웹 서버가 여러 대일 때, 사용자의 로그인 정보를 한 서버에 유지.
- 쉽게 말해: 사용자 요청을 특정 서버에 "끈끈하게" 고정.
- 실무: 로드 밸런싱 환경에서 세션 유지 시 사용됩니다.
151. Circuit Breaker (서킷 브레이커)
- 뜻: 외부 서비스나 시스템에 문제가 생겼을 때, 실패를 감지하고 추가 요청을 차단하는 패턴입니다.
- 예시: 외부 API가 계속 실패하면 요청을 중단하고 시스템을 보호.
- 쉽게 말해: 시스템의 과부하를 막는 "안전장치".
- 실무: 마이크로서비스에서 Hystrix나 Resilience4J 같은 도구로 구현합니다.
152. Rate Limiting (레이트 리미팅)
- 뜻: 사용자나 시스템이 일정 시간 동안 너무 많은 요청을 보내지 않도록 제한하는 기능입니다.
- 예시: 초당 5개의 요청만 허용.
- 쉽게 말해: 시스템을 보호하기 위해 "너무 많이 접근하지 마세요" 라는 규칙.
- 실무: API 사용량 제한, DoS 공격 방지에 사용됩니다.
153. Token Bucket (토큰 버킷)
- 뜻: 요청이 일정한 비율로 처리되도록 제한하는 알고리즘입니다.
- 예시: 초당 10개의 토큰이 추가되고, 요청이 있을 때 토큰을 소모.
- 쉽게 말해: 요청을 "버킷에 담긴 토큰"만큼만 처리.
- 실무: Rate Limiting 구현 시 많이 사용됩니다.
154. Shadow Deployment (섀도우 배포)
- 뜻: 새로운 버전의 애플리케이션을 실제 트래픽과 같은 조건에서 테스트하지만, 결과는 무시하는 배포 방식입니다.
- 예시: 실시간 트래픽을 새로운 버전으로 보내되, 응답은 무시함.
- 쉽게 말해: 실제 상황처럼 테스트하되 사용자에게 영향 없음.
- 실무: 대규모 배포 시 성능 테스트에 사용됩니다.
155. Cold Start (콜드 스타트)
- 뜻: 서버리스 환경(예: AWS Lambda)에서 함수가 처음 실행될 때 느려지는 현상입니다.
- 예시: AWS Lambda가 처음 호출될 때 준비 시간이 필요해 느림.
- 쉽게 말해: "처음 실행 시 준비 시간 때문에 느려짐".
- 실무: 서버리스 아키텍처 최적화 시 해결해야 하는 문제입니다.
156. Eventual Consistency (결과적 일관성)
- 뜻: 분산 시스템에서 모든 데이터가 결국에는 일관된 상태로 수렴하는 성질입니다.
- 예시: 데이터베이스 복제 시 약간의 시간 차이가 발생하지만 결국 일치.
- 쉽게 말해: "지금은 다를 수 있지만 나중엔 같아진다".
- 실무: 분산 데이터베이스, NoSQL 환경에서 중요합니다.
157. CAP Theorem (CAP 이론)
- 뜻: 분산 시스템에서 일관성(Consistency), 가용성(Availability), 분할 허용성(Partition Tolerance) 중 두 가지만 동시에 보장할 수 있다는 이론입니다.
- 예시: 시스템이 네트워크 분할 시, 일관성과 가용성 중 하나를 선택해야 함.
- 쉽게 말해: 세 가지 중 두 가지만 선택 가능.
- 실무: 분산 시스템 설계 시 필수 개념.
158. API Throttling (API 쓰로틀링)
- 뜻: 시스템이 과도하게 요청을 처리하지 않도록 속도를 조절하는 기능입니다.
- 예시: 초당 최대 100개의 요청만 처리.
- 쉽게 말해: 요청 처리 속도를 "적당히 조절".
- 실무: 시스템 성능 보호와 대규모 트래픽 제어 시 사용됩니다.
159. Webhook (웹훅)
- 뜻: 이벤트가 발생했을 때 다른 시스템에 알림을 보내는 방식입니다.
- 예시: 결제가 성공하면 서버가 자동으로 다른 시스템에 알려줌.
- 쉽게 말해: "이벤트 알림을 실시간으로 보내는 방법".
- 실무: 결제, 알림 시스템, 자동화 도구에서 많이 사용됩니다.
160. Dead Letter Queue (DLQ)
- 뜻: 메시지 큐에서 처리되지 못한 메시지를 따로 보관하는 큐입니다.
- 예시: 실패한 작업을 DLQ에 보내서 나중에 확인하고 처리.
- 쉽게 말해: 실패한 메시지를 "따로 보관하는 큐".
- 실무: 메시지 큐(예: RabbitMQ, Kafka)에서 오류 처리 시 사용됩니다.
반응형