03 kafka 기본개념
1. kafka 1. kafka의 기본구성 구성 프로듀서(Producer) : 카프카에 메시지(데이터)를 전달하는 주체 컨슈머(Consumer) : 카프카의 메시지(데이터)를 처리하는 주체 토픽(Topic) : 카프카에 넣을 메시지의 종류를 구분하는 개념 (≒ 카테고리) 흐름 ...
1. kafka 1. kafka의 기본구성 구성 프로듀서(Producer) : 카프카에 메시지(데이터)를 전달하는 주체 컨슈머(Consumer) : 카프카의 메시지(데이터)를 처리하는 주체 토픽(Topic) : 카프카에 넣을 메시지의 종류를 구분하는 개념 (≒ 카테고리) 흐름 ...
1. kafka setup 1. JDK # Kafka를 실행시키려면 JDK 17 이상이 설치되어 있어야 함. $ sudo apt update $ sudo apt install openjdk-17-jdk 2. 카프카 설치 $ wget https://dlcdn.apache.org/kafka/4.0.0/kafka_2.13-4.0.0.tgz...
1. kafka 1. kafka 고성능 데이터 파이프라인, 스트리밍 분석, 데이터 통합 및 미션 크리티컬 애플리케이션에 사용되는 오픈 소스 시스템들 사이에서 발생하는 데이터를 끊기지 않게, 대용량으로, 실시간에 가깝게 흘려보내고 저장하는 분산 이벤트 스트리밍 플랫폼 대규모 데이터를 처리할 수 있는 메시지 큐 2. 메시지 큐(Messag...
1. 함수를 파라미터로 넘긴다. 1. Memo 함수 자체를 넘긴다는 뜻이 아닌 “동작(행위)을 객체로 만들어서 전달한다”는 의미 로직의 제어권(로직을 어떻게 수행하냐)을 호출자에서 메서드로 넘기되, 세부 동작(어떤 로직을 수행하냐)은 다시 호출자가 결정 execute(() -> heavyWork()); 메서...
1. Stream 1. Stream 스트림(Stream)은 데이터의 집합이 아니라 데이터 처리 파이프라인 컬렉션은 데이터를 가지고, 스트림은 데이터를 처리하고, 결과를 저장하지 않음. 2. 특징 데이터 저장 안 함 스트림은 요소를 담지 않음. 항상 원본 데이터 소스에서 흘려보냄. 단방향...
1. Method 참조 1. 메소드 참조 메서드 참조는 이미 존재하는 메서드를 람다 표현식 대신 함수형 인터페이스의 구현으로 전달하기 위한 문법 메서드 참조는 함수형 인터페이스 타입이 기대되는 위치에서, 특정 메서드 호출을 람다 표현식 형태로 축약해 표현한 것 2. 기본 형태 메서드 참조는 :: 연산자를 사용 구분 ...
1. lambda - 일반 클래스 1. 인터페이스 @FunctionalInterface interface Calculator { int calculate(int a, int b); } 2. 익명클래스 public static void main(String[] args) { Calculato...
1. 구분 1. CMD 오래된 윈도우 기본 쉘 / 배치(.bat) 실행용 문법이 단순하지만 기능이 제한적 현대적인 자동화, 구조적 처리에 취약 레거시 스크립트 유지용으로 주로 남아 있음 2. PowerShell 마이크로소프트가 cmd 한계를 해결하려고 만든 현대적 쉘 현재 윈도우 표준 쉘 .NET 기반 강력한 필터링...
1. 흐름 (빌드 - push - 실행) 1. 컨테이너 기반 표준 흐름 베이스 이미지로 Docker/Podman에서 이미지를 빌드 이미지를 레지스트리에 push Kubernetes(OpenShift)가 레지스트리에서 pull해서 실행 2. 단일 서버 컨테이너 흐름 베이스 이미지로 Docker/Podman에서 이미지를 빌드 이미...
1. SpringBoot + ECR + GitHub Actions 1. 전체적인 흐름 개발자가 푸쉬를 하면, Github Actions에서 캐치를 해서, ECR에 접근해서 이미지 빌드 및 저장 SSH로 EC2에 접근하여 기존 도커 파일 지우고 새로 run처리 2. EC2에 도커설치 sudo apt-get update...
1. SpringBoot CI/CD 1. SpringBoot CI/CD Github -(push)-> Github Action -(ssh)-> AWS EC2 개발자가 git에 커밋을 하면, Git에서 push 이벤트를 체크하여, Github Action에서 SSH로 AWS EC2에 접근 설정된 방법으로 반영 처리함...
1. GitHub Actions 1. Note GitHub Action -> GitHub Actions https://docs.github.com/ko/actions 2. GitHun Actions 기본형 1. 패키지 구조 .github/workflows가 기본 디렉토리 오타나 이름이 다를 경우 진행X 최상위 폴더 구조에...
1. CI/CD 1. CI/CD CI/CD란 Continuous Integration, Continuous Deployment CI/CD는 테스트(Test), 통합(Merge), 배포(Deploy)의 과정을 자동화 CI/CD는 도구라는 느낌보다 그냥 “파이프라인” 느낌에 가까움. 코드 변경부터 배포까지를 자동으로 흘려보내는 설계 방식...
1. K8S, K3S 1. K8S(Kubernetes) CNCF가 관리하는 표준 쿠버네티스 프로젝트 여러 컴포넌트가 분리되어 있고, 대규모·프로덕션 환경을 전제로 설계 2. K3S Rancher(SUSE)가 만든 경량 쿠버네티스 배포판 K8S를 그대로 쓰되, 불필요한 요소를 제거하고 단일 바이너리로 묶음 2. 생성 1. EC ...
1. EC2에 도커 환경구성 1. EC2에서 도커설치(정해진 명령어) sudo apt-get update && \ sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common && \ curl -fs...
1. ( 1 Nginx * N domain ) 1. default.conf #서버1 server { listen 80; server_name jscode.p-e.kr; # 이 경로의 접근은 A localtion location / { # A location root /us...
1. Nginx 1. Nginx 서버 앞에서 트래픽을 받아서 정리하고 넘겨주는 고성능 웹 서버이자 리버스 프록시 Nginx는 “애플리케이션 서버 앞단”에서 처리 이벤트 기반 구조 매우 적은 리소스로 많은 동시 연결 처리 문지기 + 교통정리 + 방패 역할을 하는 서버 2. Nginx 역할 정적 컨텐츠 제공 SSL 처리 ...
1. AWS CloudFront 1. AWS CloudFront CloudFront는 AWS에서 제공하는 CDN(콘텐츠 전송 네트워크) 서비스 원본(Origin): S3, ALB, EC2 등 CloudFront가 원본 데이터를 받아 엣지 로케이션에 캐시 사용자는 가장 가까운 엣지에서 응답 AWS에서 S3를 Https를 사용하기 위해서는 C...
1. S3 1. Amazon S3 (Simple Storage Service) S3는 서버에 디스크를 붙이는 게 아니라, 인터넷을 통해 접근하는 객체(Object) 저장소 파일 저장 뿐만 아니라 파일을 다운받는 것에 대해서도 최적화되어 있는 서비스 S3는 서버와 분리된 파일 저장소 AP 서버 터져도 파일은 안전함. 2. S3 저장 ...
1. RDS 1. RDS(Relational Database Service) AWS가 대신 운영해 주는 관리형 데이터베이스 서비스 별도의 EC2 안에 RDS를 설치해서 사용해도 무관하기는 함. 하지만 관리하는데 비용이나 예산이 들기때문에 AWS환경만 쓴다면 이래저래 비용이 발생하니 그냥 RDS를 사용함. 2. RDS에서 쓸 수 있는...
1. ELB 1. ELB(Elastic Load Balancer) 트래픽(부하)를 적절하게 분배해주는 장치를 로드밸런서(Load Balancer) 서버를 2대 이상 가용할 때 ELB를 필수적으로 도입하게 됨. AWS의 ELB에는 부가 기능으로 SSL/TLS(HTTPS)를 제공함. 2. SSL/TLS SSL/TLS는 HTTP를 HT...
1. HTTPS - DNS 1. DNS(Domain Name System) IP는 특정 컴퓨터를 가리키는 주소의 역할 문자를 IP 주소로 변환해주는 하나의 시스템(서버)을 만들게됨 이게 바로 DNS(Domain Name System) 2. HTTPS(HyperText Transfer Protocol Secure) 웹에서 데이터를 ...
1. EC2 1. EC2(Elastic Compute Cloud) 컴퓨터를 빌려서 원격으로 접속해 사용하는 서비스 내 컴퓨터에서 서버를 배포하면 다른 사용자들이 24시간 동안 접근이 가능한 상태. 그러다보니 보안적으로도 위험할 수도 있음. 따라서 EC2를 활용하여 사용함. 2. EC2 종류 1. 글로벌 메이저 클라우드 전 세계...
1. Note 1. 빌드도구 - 빌드 Spring Boot는 메이븐 또는 그레들 같은 빌드 도구를 사용해서 소스 코드를 컴파일하는데 메이븐의 경우는 pom.xml, 그레들의경우에는 build.gradle를 통해서 빌드에 관한 기본 설정을 확인하고 필요한 라이브러리들을 pom.xml 또는 build.gradle에 정의된 저장소 설정을 기준으...
1. Volume 1. Volume 1. Volume(Dokcer와 동일) 쿠버네티스는 기존 파드에서 변경된 부분을 수정하지 않고, 새로운 파드를 만들어서 통째로 갈아끼우는 방식으로 교체 데이터를 영속적으로 저장하기 위한 방법 데이터 Volume 방식 로컬 볼륨 : 파드 내부의 공간 일부를 볼륨(Volume)으로 활용하...
1. 환경변수 1. 환경변수 환경변수로 등록한 값을 설정하는 것 스프링부트에서 @Value로 값을 획득하는 것들 @Value("${MY_PASSWORD:default}") private String myPassword; 2. deployment yaml ~~~~~~ template: metadat...
1. Deployment 1. Deployment 파드를 묶음으로 쉽게 관리할 수 있는 기능 디플로이먼트(Deployment) 라는 걸 활용해서 파드(Pod)를 자동으로 배포 2. 디플로이먼트(Deployment)의 장점 파드의 수를 지정하는 대로 여러 개의 파드를 쉽게 생성할 수 있음. ex) 파드를 100개를 ...
1. kubernetes 1. kubernetes 다수의 컨테이너를 효율적으로 배포, 확장 및 관리 하기 위한 오픈 소스 시스템 쿠버네티스(Kubernetes)는 Docker Compose와 비슷함. 쿠버네티스(Kubernetes)의 대략적인 이미지를 그릴 때는 Docker Compose의 확장판으로 보면 편함. 2. 쿠버네티스의 장점...
1. Docker Compose 1. Docker Compose 여러 개의 컨테이너로 이루어진 복잡한 애플리케이션을 한 번에 관리할 수 있게 해줌 여러 컨테이너를 하나의 환경에서 실행하고 관리 하는 툴(☆) 2. 사용하는 이유 여러 개의 컨테이너로 이루어진 복잡한 애플리케이션을 하나의 환경에서 실행하고 관리 하게함. 복잡한 명령어...
1. Docker File 1. Dockerfile Docker 이미지를 만들게 해주는 파일 Dockerhub에 올려놓은 Docker 이미지가 아닌, 나만의 Docker 이미지를 만들고 싶을 때 사용 직접 만든 Spring Boot 프로젝트 자체를 Docker 이미지로 만드는 용도 2. Note 사용자가 도커파일이라는 스크립트를 ...
1. MultipartFile 1. MultipartFile MultipartFile은 스프링 프레임워크가 제공하는 인터페이스 HTTP multipart/form-data 요청으로 업로드된 파일을 스프링이 편하게 다루도록 감싼 추상화 객체 package : org.springframework.web.multipart.MultipartFil...
1. Docker Volume 1. 컨테이너의 문제점 도커는 컨테이너를 수정할때 특정 부분만 수정하지 않고, 새로운 컨테이너를 만들어서 교체하는 방식을 채택함. 기존 컨테이너를 새로운 컨테이너로 교체하면, 기존 컨테이너 내부에 AP, DB등에서 기록한 데이터도 같이 삭제됨. 그래서 도커는 컨테이너 내부에 저장된 데이터가 삭제되면 안 되는 ...
1. DockerHub https://hub.docker.com/ 도커 이미지를 저장/다운로드 할 수 있는 저장소 역할하는 곳. pull로 당기면 도커허브에서 다운로드됨. 2. image 1. image 다운 # docker pull 이미지명 (최신버전 다운로드) $ docker pull nginx # docker p...
1. Memo(20215.12.02.) 스프링 환경에서 RestAPI 사용중, 배치가 스케줄러로 1회 호출하여 순차적으로 1작업 루틴(연결-작업-제거)씩 하는 상황이었으나, 외부 요청에서 하는 작업으로 변경하면서 동시에 실행하는 상황이 생김. 따라서 기존에 Component로 만들어서 주입하던 방식을 사용하면, 스레드에 불안전함! ...
1. Docker 1. 도커(Docker)/컨테이너(Container)/이미지(Image) 도커(Docker) 컨테이너를 사용하여 각각의 프로그램을 분리된 환경에서 실행 및 관리할 수 있는 툴 툴! 도구! 컨테이너(Container) 하나의 컴퓨터 환경 내에서 독립적인 컴퓨터 환...
1. note 과금정산플랫폼 노트(2025.11.29.) 2. 요청 내용 웹에서 파일 업로드할때 파일을 암호화하여 저장하기. 3. Memo 암호화 파일을 업로드할떄 암호화하여 저장 작업 완료한 파일을 이동할때는 암호화상태로 이동 복호화 서비스단에서는 기존과 동일...
1. note 과금정산플랫폼 노트(2025.11.19.) 2. 기존 로직 로그인 성공하면 세션에 유저 데이터 저장. JSP로 페이지를 생성 + JSP내 AJAX로 스프링에 데이터 요청함. 외부에서 배치 실행용으로 RestAPI 컨트롤러가 있음. 각기 Request는 별도 특징이 없음. 3. 요청 내용 외부에서 접근하는...
1. Request 1. Request에서 획득 가능한 정보 구분 내용 스프링에서 접근 방식 요청 라인 HTTP 메소드, URL, 프로토콜 버전 HttpServletRequest, @GetMapping 등 헤더 ...
1. Lock - Transaction 1. Transaction DB의 일관성과 무결성을 보장하기 위한 단위를 정의 트랜잭션 핵심에 따른 단위/정의 A: 원자성 → 전부 성공/전부 실패 C: 일관성 → 데이터 규칙이 깨지지 않음 I: 고립성 → 동시에 실행되어도 논리적으로 독립적으로 보임 ...
1. AJAX 1. AJAX Asynchronous JavaScript and XML의 약자 웹 페이지에서 서버와 비동기적으로 데이터를 주고받는 기술 페이지를 새로고침하지 않고 서버에서 데이터를 받아오거나 서버로 데이터를 보낼 수 있게 해주는 방법 2. 주요 특징 비동기 처리 (Asynchronous) 서버 요...
1. mybatis 2. mybatis 인터셉터 흐름 1. 스프링 컨트롤러 / 서비스 호출 서비스에서 Mapper 메소드를 호출 예: userMapper.findById(10) 이때는 단순히 메소드 호출일 뿐, DB와 아직 연결되지 않음. 2. Mapper 프록시 호출 마이바티스는 Mapper 인터페이스를 동적으로 프록시로 만들...
1. 기능요약 ID/PWD 로그인 OTP 기능 일정횟수 이상 틀릴 경우 계정 Block처리 회원가입 / 비밀번호찾기 2. Note 스프링 시큐리티는 일단 보류, 직접 구현 Intent 세션에 값을 두고 값이 있을 경우에는, 메뉴선택에서 로그인 제거 모든 메뉴에 적용해야해서 fragments H...
1. 기능요약 ID/PWD 로그인 OTP 기능 일정횟수 이상 틀릴 경우 계정 Block처리 회원가입 / 비밀번호찾기 2. Note Intent 서비스를 가장 작은 단위로 쪼개서 구성 1개의 Service에 포함시킴. 컨트롤러에서는 전부 성공한다는 가정하에 로직을 구성하고, 패스워드 오류, OTP오...
1. 기능요약 ID/PWD 로그인 OTP 기능 일정횟수 이상 틀릴 경우 계정 Block처리 회원가입 / 비밀번호찾기 2. Note 기본 기능 구현 작업 Point 로그인 자체에서는 별도의 에러날 상황이나 문제가 적은 편으로 대부분 아이디 또는 패스워드 틀림으로 만들어짐. 따라서 기본 컨트롤러 ...
1. asiana-clone 1. asiana-clone 아시아나 항공 예약 시스템을 기반으로 클론코딩한 웹 애플리케이션, Spring Boot와 여러 기술들을 활용한 백엔드 구조를 경험하고자 진행함. 2. 주요 기능 기능명 주요 화면(페이지) 구현 상세 기능 비고 ...
1. 요청 구분 1. Spring MVC 컨트롤러 파라미터 애노테이션 비교 애노테이션 데이터 위치 HTTP 요청 형식 대상 특징 / 용도 배열/리스트 처리 @RequestParam URL 쿼리 파라미터, 폼 데이터 ...
1. 주요기능 항공편 검색 및 예약 항공편 예약 확인 항공편 출도착 조회 이벤트 조회 및 쿠폰 발급 2. Note GPT로 단순 반복작업은 SQL 생성처리. 비행기 5편, 유저 5명, 비행기편 150개, 예약 10건 3. SQL 1. 비행기 정보 INSERT INTO flights.aircrafts (aircraf...
1. 주요기능 항공편 검색 및 예약 항공편 예약 확인 항공편 출도착 조회 이벤트 조회 및 쿠폰 발급 2. Note 상황 View와 SpringBoot 기초 데이터를 만들어서 항공편 조회 기능을 구현을 완료함. 항공편 테스트 케이스를 500건으로 만들고 다른 화면에서 작업을 진행하려고 했으나, 건수...
1. 주요기능 항공편 검색 및 예약 항공편 예약 확인 항공편 출도착 조회 이벤트 조회 및 쿠폰 발급 2. Note 기준 1차 작업은 기본 기능이 목표로 구성하여, 4개 기능이 들어갈 수 있는 테이블 위주로 구성 항공편을 중심으로 예약 및 비행기편이 관리하므로 가장 최소한의 기준이 되는 테이블을 생...
1. 트랜잭션 1. 트랜잭션 (Transaction) DBMS에서 데이터를 다루는 논리적인 작업의 단위 여러 개의 SQL 연산(INSERT, UPDATE, DELETE 등)을 하나의 묶음으로 처리하는 것 데이터의 일관성과 무결성을 보장하기 위해 하나로 묶여 수행되는 연산들의 집합 2. 트랜잭션의 특성 특성 ...
1. 이상현상 1. 이상현상 정규화되지 않은 테이블에서 데이터의 중복이나 종속성 문제로 인해 데이터의 일관성·무결성이 깨지는 현상 3가지 종류 종류 설명 예시 결과 삽입 이상 (Insertion Anomaly) 새로운 데이터를 삽입...
1. 데이터 모델링 1. 데이터 모델링(Data Modeling) 현실 세계의 데이터를 데이터베이스로 옮기기 위해 구조화하는 과정 현실(사람, 주문, 상품, 결제 등)을 데이터베이스가 이해할 수 있는 형태(테이블, 컬럼, 관계)로 표현하는 작업 2. 데이터 모델링을 하는 이유 이유 설명 ...
1. 내장함수 1. 내장함수 SQL 엔진이 기본적으로 제공하는 데이터 조작용 함수로, 별도의 사용자 정의 없이 바로 사용할 수 있는 기능 데이터를 변환, 요약, 비교, 형식 변경 등에 사용 2. 내장함수 분류 1. 구분 구분 설명 예시 단일행 함수 (...
1. SQL(Structured Query Language) 1. SQL SQL은 관계형 데이터베이스(Relational Database) 에서 데이터를 다루기 위한 언어로, 사용자는 SQL을 통해 데이터베이스에 질의(Query) 를 보내고, 데이터베이스는 그 결과를 반환 2. SQL 주요 특징 표준화된 언어 ...
1. 관계 데이터 모델 1. 관계 데이터 모델 (Relational Data Model) 데이터를 2차원 테이블(릴레이션, Relation) 형태로 표현 각 행(Row)은 튜플(Tuple), 각 열(Column)은 속성(Attribute)을 의미 데이터 간 관계를 키(Key)를 통해 연결 수학의 집합 이론(Set Theory)과 관계...
1. asiana-clone 1. asiana-clone 아시아나 항공 예약 시스템을 기반으로 클론코딩한 웹 애플리케이션, Spring Boot와 여러 기술들을 활용한 백엔드 구조를 경험하고자 진행함. 2. 주요 기능 항공편 검색 및 예약 항공편 예약 확인 항공편 출도착 조회 이벤트 조회 및 쿠폰 발급 2. 패키지 1. 패...
1. asiana-clone 아시아나 항공 예약 시스템을 기반으로 클론코딩한 웹 애플리케이션, Spring Boot와 여러 기술들을 활용한 백엔드 구조를 경험하고자 진행함. 2. 개요 프로젝트명 : asiana-clone 개발인원 : 1명 주요기능 항공편 검색 및 예약 항공편 예약 확인 항...
1. 데이터베이스 1. 주요 개념 데이터/정보/지식 구분 의미 예시 데이터(Data) 가공되지 않은 사실 또는 수치 “2025-10-14”, “홍길동”, “35세” 정보(Information) ...
1. RestTemplate 1. RestTmeplate Spring Framework에서 제공하는 HTTP 클라이언트 스프링 애플리케이션에서 다른 REST API 서버로 HTTP 요청을 보내고 응답을 받기 위해 사용하는 도구 특징 특징 설명 동기 방식 ...
1. Spring Boot Actuator 1. Spring Boot Actuator 스프링부트 애플리케이션의 운영 상태를 모니터링하고 관리할 수 있도록 도와주는 모듈 서비스가 실제로 운영 중에 어떻게 동작하고 있는지 — 헬스체크, 로그, 메트릭, 환경 정보, 스레드 상태 등 — 를 쉽게 확인할 수 있게 해주는 도구 2. Spring ...
1. Exception 1. Exception 프로그램이 실행되는 도중, 정상적인 흐름을 방해하는 오류 상황을 예외(Exception) 예외는 단순한 문법 오류(Syntax Error)가 아니라, 실행 중(Runtime) 발생하는 문제 코드가 예상치 못한 상태에 빠질 때 시스템이 이를 감지하고 처리 흐름을 바꾸기 위한 메커니즘 2. 일...
1. SpringTest 1. Junit - SpringTest - SpringBootTest 구분 역할 관계 JUnit 자바에서 단위 테스트를 작성하고 실행하기 위한 테스트 프레임워크 스프링과 무관하게 단독으로 사용 가능 ...
1. Test 1. Test 소프트웨어가 의도한 대로 동작하는지 검증과 확인하는 활동 “시스템이 올바르게 작동하는가?”를 확인하는 절차로, 단순히 오류를 찾는 걸 넘어서 품질을 보장하는 과정 2. 주요목적 구분 설명 기대 효과 결함 조기 발견 ...
2025.10.04. 일단 스프링부트 이해를 위한 대략적인 흐름만 파악, DB에 관한 상세한 내용은 스프링부트 흐름 파악하고 공부! 1. JPA 1. JPA(Java Persistence API) 자바 진영에서 “객체 ↔ 관계형 데이터베이스 매핑(ORM)”을 표준으로 정의해둔 인터페이스 규칙 2. JPA의 핵심기능 엔티티 매핑: 자바 ...
1. Optional 1. Optional 자바 8에서 도입된 클래스(java.util.Optional) 값이 있을 수도 있고 없을 수도 있는 경우를 안전하게 처리하기 위한 래퍼(wrapper) 객체 NullPointerException(NPE)을 예방하기 위해 설계됨 Null 일경우 비어있는 Optional이 됨. 2. tryCa...
1. SL4J 1. SL4J 자바 로깅을 위한 ‘표준 인터페이스(API)’ 자바에는 이미 다양한 로깅 프레임워크가 있고, 각각은 API가 다르기 때문에 프로젝트에서 혼합해서 쓰면 충돌이나 복잡함이 생김. 이를 해결하기 위해 공통된 로깅 API를 만들어서 사용하는데 이것이 SL4J 개발자는 SLF4J API에만 의존하면 됨 2. 구현...
1. Swagger 1. Swagger? Swagger는 REST API를 설계·문서화·테스트할 수 있도록 도와주는 오픈소스 프레임워크 단순한 문서 작성 도구가 아니라, API의 전체 라이프사이클을 지원하는 툴 모음 2. Swagger 주요 역할 역할 설명 기대 효과 ...
1. 스프링과 스프링부트 1. 스프링부트 스프링부트(Spring Boot)는 스프링(Spring Framework)을 더 쉽게 사용할 수 있도록 만들어진 상위 도구이자 확장 프레임워크 스프링부트 없이 스프링만 사용할 수 있지만, 스프링부트는 반드시 스프링 위에서 동작하는 구조 2. 스프링의 한계 설정의 복잡성 초기...
1.스프링 삼각형 요소 풀네임 핵심 개념 역할/효과 IoC Inversion of Control 객체 생성 및 의존성 제어를 컨테이너가 담당 (DI 기반) 코드 결합도 감소, 테스트 용이 AO...
1. 전체 1. 전체 패턴 개념 / 목적 구조 특징 사용 예시 (Java) 스프링 사용 사례 어댑터 (Adapter) 인터페이스 불일치를 맞춰서 기존 코드와 새 코드를 연결 Target 인터페이스 + Adaptee + A...
1. 스프링 모듈 구분 모듈 주요 기능 Core Container (핵심 컨테이너) - spring-core- spring-beans- spring-context- spring-expression (SpEL) IoC/DI 컨테이너, 빈 생성/...
1. Spring initializr 스프링프로젝트 생성할때 사용 https://start.spring.io 2. 스프링부트 실행시 메타데이터 설정 항목 설명 이번 설정 Project 프로젝트 유형을 선택합니다. 프로젝트의 의존성을 관리하기...
1. lombok Lombok은 자바용 오픈소스 라이브러리로, 반복되는 보일러플레이트 코드(boilerplate code)를 컴파일 시점에 자동으로 생성해주는 도구 note 보일러플레이트 코드 = 개발자가 매번 비슷하게 작성해야 하는 코드들 (getter/setter, toString, equals, hashCode, 생성...
1. 전체흐름 1. Reqeust (클라이언트 -> 서버) DispatcherServlet: 프론트 컨트롤러, 모든 요청 진입점. HandlerMapping: URL, 메서드, 애노테이션 등을 기반으로 어떤 컨트롤러 메서드를 호출할지 결정. HandlerAdapter: 선택된 컨트롤러를 실제 실행할 수 있도록 어댑터 역할. Con...
1. Controller 1. Controller 설정 @Controller public class HelloController { @GetMapping("/hello") public String sayHello(Model model) { model.addAttribute("message", "안녕하세요, 스프링 MVC!...
1. mvc 1. mvc Model (모델) 애플리케이션의 데이터와 비즈니스 로직을 담당 데이터베이스에서 고객 정보를 가져오는 코드, 계산 로직 등 View (뷰) 사용자에게 보여지는 화면 담당 JSP, Thymeleaf, HTML 등 Controll...
1. mybatis 1. mybatis SQL Mapper 프레임워크 직접 작성한 SQL을 매핑해서 Java 객체와 연동 JDBC 기반 → 커넥션 풀(HikariCP 등)과 함께 사용 특징: SQL 제어권을 개발자가 직접 갖는다 2. 특징 항목 내용 SQ...
1. Transactional 1. Transactional 스프링에서 제공하는 선언적 트랜잭션 관리 어노테이션 메서드나 클래스에 붙이면 트랜잭션 범위를 정의할 수 있음 핵심 역할: DB 작업을 하나의 트랜잭션 단위로 묶어서 모두 성공하거나 모두 실패하게 관리 2. 동작의 흐름 메서드 시작 → 트랜잭션 시작 메서드 정상 종료 ...
1. DB Connection DB와의 연결 자체를 관리하는 역할 1. DB Connection DB 커넥션 관리 객체 / 인프라 계층 흔히 Connection Pool / DataSource / DB 인프라라고 부름 Data Access Layer 와는 다르게, DB와의 연결 자체를 관리하는 역할 2. 종류 ...
1. Data Access Layer 애플리케이션에서 DB와 직접 데이터를 주고받는 모든 기술을 통칭 1. Data Access Layer 종류 범주 예시 SQL Mapper MyBatis, iBatis 등 ORM Hibe...
1. Spring Filter/interceptor 1. Servlet Filter 위치: 디스패처서블릿 이전 (가장 앞단) 범위: 스프링 MVC 유무 상관없이, 서블릿 레벨에서 모든 요청/응답을 가로챔 주요 역할 인증(Authentication) / 인가(Authorization) → 스프링 시큐리티가 여기에 구현 ...
1. Validation 1. Spring Validation 스프링은 Bean Validation(JSR-303/JSR-380) 표준을 기반으로 동작 기본 구현체는 Hibernate Validator DTO/VO 클래스 필드에 어노테이션으로 검증 조건을 부여하고, 컨트롤러에서 @Valid 또는 @Validated를 사용해 적용 2. ...
1. AOP 1. AOP 핵심 로직과 공통 관심사(Cross-Cutting Concern)를 분리하는 프로그래밍 기법 핵심 로직(Core Business Logic): 실제 애플리케이션이 수행하는 기능 횡단 관심사(Cross-Cutting Concern): 로깅, 트랜잭션, 보안, 성능 측정 등 여러 곳에서 반복되는...
1. DI 1. 의존성 어떤 클래스가 다른 클래스(객체)의 기능을 사용해야 할 때 “의존성이 있다.” Car가 Tire 객체를 사용해야 굴러갈 수 있다면, Car는 Tire에 의존 public class Car { private Tire tire = new KoreaTire(); // Car는 KoreaTire에 의존 } ...
1. ActionFactory 1. ActionFactory 팩토리 패턴 + 액션(Action) 객체 구조”를 결합한 웹 애플리케이션 설계 패턴 1. 액션(Action) 객체 요청 하나하나를 처리하는 작은 책임 단위 클래스 예: LoginAction, LogoutAction, RegisterAction 각 Action은 execu...
1. MVC1&MVC2 1. MVC1 1. MVC 1 패턴 (정의) 초기 JSP/서블릿 웹 구조에서 나온 패턴 JSP가 Controller와 View 역할을 동시에 수행하는 구조 요청 처리, 비즈니스 로직 호출, 화면 출력까지 JSP 안에서 처리 2. 역할 구분 Controller ...
1. 파일업로드 - http 1. 폼(form)과 HTTP HTML <form>은 사용자 입력 데이터를 서버로 전송하는 표준 방법 전송 방식(method) GET → URL 쿼리 스트링으로 전송, 짧은 데이터/검색용 POST → 요청 본문(body)에 데이터 전송, 대용량/보안 데이터 업로드에 적합 ...
1. 쿠키(Cookie) 1. 쿠키 클라이언트(브라우저)에 작은 데이터를 저장하고, 이를 통해 서버가 사용자를 식별하거나 상태를 일부 유지할 수 있게 하는 수단 용도 로그인 상태 유지 (단, 중요한 정보는 세션 사용) 사용자 환경 설정 저장 (테마, 언어) 장바구니 정보 일부 유지 구...
1. JSP 태그 1. JSP태그 JSP는 HTML에 Java 코드를 직접 넣을 수 있는데, 이렇게 하면 유지보수가 어렵고 코드가 지저분해짐 그래서 JSP는 태그(tag) 형태로 기능을 캡슐화해서 제공 HTML처럼 형식으로 작성 내부적으로 Java 코드로 변환하여 실행됨. 2. JSP 태그 종류 | 구분 ...
1. JSP 1. JSP(JavaServer Pages) HTML 코드 안에 Java 코드를 삽입해 동적인 웹 페이지를 생성할 수 있게 해주는 자바 기반 기술 JSP는 실행되기 전에 서블릿 코드로 변환되고, 이후 컴파일되어 동작함. JSP 파일(.jsp)은 기본적으로 HTML 구조를 가지면서, 필요한 부분에만 Java 코드나 JSP 태그를...
1. Servlet 1. Servlet HTTP 요청-응답을 처리하기 위해 서버 사이드 자바 기반 서버 컴포넌트 Java 기반 웹 애플리케이션에서 HTTP 요청을 받아 처리하고, 그 결과를 HTTP 응답으로 돌려주는 서버 측 컴포넌트 브라우저 → 서버로 들어오는 요청을 자바 코드로 처리하게 해주는 역할 2. 주요개념 ...
1. 스레드락 요약 락 이름 요약 대표 클래스 언제 사용하나? Mutex 가장 기본적인 배타 락 synchronized, Lock 충돌 방지, 단순 구조 Reentrant Lock ...
1. 자바에서 쓰레드 1. Runnable 인터페이스 class MyTask implements Runnable { // run() 메서드만 하나 가짐 @Override public void run() { System.out.println("Runnable로 실행됨"); } } public...
1. extends 1. 상속 한 클래스가 다른 클래스의 속성과 메서드를 물려받는 것 “하위 클래스 IS-A 상위 클래스” 관계 2. 목적 공통 기능 재사용 : 상위 클래스에서 구현한 메서드를 하위 클래스가 그대로 사용 가능 기능 특화/확장 : 하위 클래스에서 필요한 메서드를 오버라이드하거나 새로 추가 코드 중복 최소화 : 공...
1. T-memory 1. T-memory 공식적인 표기 방법 X 편의를 위해서 사용하는 방법 O 2. 모양 ┌──────────────────────────────────┐ │ Method Area │ │ 클래스 코드, 메서드 코드, │ │ static 변수 등 ...
GC는 애플리케이션이 실행되는 도중에 루트(root)에서 객체까지의 참조 가능성(Reachability)을 안전하고 정확한 타이밍에 탐지하여 메모리를 해제하고, 힙영역을 최적화 하는 과정 1. Serial GC (단일 스레드 GC) - 초기 GC 1. 특징 GC 중에는 모든 애플리케이션 스레드가 멈추고, 1개의 GC 스레드만 힙을 정리하며, ...
메모리 관리가 적절히 이루어지지 않을 경우, 메모리 누수 및 자원 고갈로 인해 프로그램이나 운영체제가 비정상적으로 종료될 위험이 존재함. 1. 메모리 관리 1. 메모리 관리를 하지 않으면 메모리 누수(Memory Leak)는 프로그램 또는 운영체제의 비정상 종료를 초래할 수 있음. 잘못된 메모리 접근(Dangling Pointer)은 메모...
1. DBCP / 커넥션풀 / DataSource 구분 정의 역할 특징 / 예시 커넥션 풀 (Connection Pool) 데이터베이스와의 연결(Connection) 객체를 미리 일정 개수 생성해두고 풀(Pool, 저장소)에 보관한 뒤, 애플...
1. JDBC 1. JDBC 자바에서 DB에 연결하고 SQL을 실행할 수 있도록 정의된 표준 API 즉, 자바 애플리케이션 ↔ 데이터베이스 간의 통신을 담당하는 표준 인터페이스 DB 벤더(Oracle, MySQL, PostgreSQL 등)가 자기 DB용 JDBC 드라이버를 제공해야 사용 가능 2. JDBC 기능 ...
1. 서버보안 1. 보안 관련 주요 용어 1. 보안 리스크(risk) 서버와 네트워크 운영 중 발생할 수 있는 정보 유출, 서비스 중단, 데이터 변조 등의 위험 요소 주로 인적 실수, 취약한 설정, 악성코드, 네트워크 공격 등에서 발생 사고가 발생하기 이전에 존재하는 잠재적 위험 요소 예시 웹 서버의 관리자 계정 비...
1. DMZ 1. DMZ DMZ(DeMilitarized Zone)는 네트워크 보안 설계에서 외부 네트워크(인터넷)와 내부 네트워크(사내망) 사이에 두는 중간 완충지대 외부 사용자가 접근해야 하는 서버(웹 서버, 메일 서버, DNS 서버)를 배치 외부 트래픽이 내부망까지 바로 들어오지 못하게 보안 완충 구간 형성 외부에서 DMZ 서버가...
1. 클라우드 1. 클라우드 물리적으로 내 컴퓨터나 회사 서버에 직접 저장하거나 처리하지 않고, 원격 데이터센터에 있는 컴퓨터 자원을 인터넷으로 접근해 사용하는 것 필요할 때 원하는 만큼 빌려 쓰고, 사용한 만큼 비용을 지불하는 형태 2. 클라우드의 특징 유연성: 컴퓨팅 자원을 필요할 때 즉시 늘리거나 줄일 수 있음 확장성: ...
1. 상태 / 무상태 프로토콜 1. 상태 프로토콜 / 무상태 프로토콜 HTTP처럼 상태를 저장하지 않는 프로토콜들을 묶어서 무상태 프로토콜(stateless protocol) 상태를 저장하는 프로토콜을 묶어서 상태 프로토콜(stateful protocol) 상태(State)는 데이터의 진행 정보 및 관련 데이터(세션, 연결 정보 등)를 의...
1.HTTP 1. 기본용어 클라이언트/서버모델 네트워크 통신 구조 중 하나로, 클라이언트는 서비스나 데이터를 요청하고, 서버는 해당 요청을 처리하고 응답하는 구조 웹 브라우저(클라이언트) ↔ 웹 서버 요청 메시지 클라이언트가 서버로 전송하는 메시지. 요청 방식(메서드), 요청 대...
1. 사설 네트워크 / 공용 네트워크 구분 설명 예시 사설 네트워크 제한된 사용자만 접근 가능한 폐쇄형 네트워크 회사 내부망, 가정용 공유기 공용 네트워크 누구나 접근 가능한 개방형 네트워크 ...
1. 네트워크 관련 용어 네트워크(Network) : 어떤 대상과 다른 대상을 특정한 장치나 규칙에 따라 연결하여 구성한 유기적인 시스템. 일반적으로 컴퓨터, 서버, 라우터 등 다양한 장치를 상호 연결해 데이터를 주고받을 수 있게 함. 노드(Node): 네트워크에 연결된 각 장치를 의미. 컴퓨터, 서버, 라우터, 프린터 등 네트워크 상에서 통...
1 응용계층 1. 응용계층 기능 설명 네트워크 서비스 제공 이메일, 웹, 파일 전송 등 네트워크 기반 서비스 제공 프로토콜 기반 데이터 처리 응용 프로그램끼리 통신할 수 있도록 데이터 포맷/전송 처리 ...
1. 전송 계층 1. 전송계층 컴퓨터 간이 아니라, 컴퓨터 안의 프로그램(애플리케이션)끼리 정확하게 데이터를 주고받게 해주는 계층 역할 데이터를 쪼개고 붙임 (분할 & 재조립) 신뢰성 보장 (오류 제어) 흐름 조절 통신 대상 지정 (포트 번호 사용) 2. 프로토콜 종...
1. 네트워크 계층 1. 네트워크 계층 개요 송신 측에서 수신 측까지 데이터를 중간 경로(라우터)를 거쳐 전달하는 책임 논리 주소(IP 주소) 기반으로 종단 간 통신 경로를 설정 전송 계층에서 넘겨받은 세그먼트를 패킷(IP 패킷) 단위로 캡슐화하여 전달 2. IP 패킷의 구성 네트워크 계층에서 데이터를 전달할 때 사용하는 데이터 ...
1. 데이터 링크 계층 1. 데이터 링크 계층 개요 네트워크 7계층 중 2번째 계층(하위 계층) 물리 계층에서 받은 비트열을 프레임 단위로 조직화 직접 연결된 두 장치 간의 안정적 데이터 전송을 담당 MAC 주소 기반의 주소 지정 및 오류 감지 기능 제공 2. 데이터 링크 계층 역할 프레이밍: 연속된 비트열을 구조화된 프레임 ...
1. 물리계층 1. 물리계층 개요 네트워크 7계층 중 가장 하위 계층 비트 단위의 데이터를 전기적/광학적 신호로 변환하여 전송 상위 계층의 논리적 데이터를 실제로 전송 가능한 상태로 처리 2. 물리계층의 역할 0과 1로 구성된 데이터를 전기 신호(또는 광신호 등)로 바꾸어 전송 전송된 신호를 다시 0과 1의 비트열로 복원 ...
1. Race condition 1. RaceCondion 여러 스레드나 프로세스가 동시에 공유 자원에 접근할 때, 실행 순서나 타이밍에 따라 프로그램의 결과가 달라지는 상태 “누가 먼저 실행되느냐에 따라 결과가 달라지는 문제” 동시성(concurrency) 환경에서 주로 발생하며, 예측 불가능하고 디버깅이 어려움 2. 특징 공유...
1. 인텔리제이 - servelt Project 프로젝트 생성할때 아키텍처 설정 org.apache.maven.archetypes:maven-archetype-webapp 메이븐 프로젝트로 간단하게 생성/스마트톰캣 자동 설정은 가능함. 이렇게 안하면 매우 복잡해져서 이클립스를 사용하거나 스프링 레거시쓰는게 편해짐. 스프링부트를 사용하면...
1. 유닉스의 탄생과 구성 1. 유닉스의 설계원칙 유닉스는 시분할 시스템과 다중 프로세스를 지원하도록 설계 소형 컴퓨터용 운영체제의 모범 사례로, 설계자(프로그래머)의 편의성을 중시하여 운영체제 크기가 작고 구조가 단순함. 대부분의 알고리즘은 속도나 복잡성보다는 단순성에 초점을 맞춤 2. 유닉스의특징 대화형 시스템: 사용자...
01. 분산시스템 1. 분산시스템/네트워크 분산처리는 여러 컴퓨터 사용자들이 네트워크로 연결되어 서로 데이터를 주고받으며 협력해서 작업을 수행하는 시스템 네트워크는 서로 독립된 시스템들이 빠른 통신 채널을 통해 상호 통신할 수 있도록 지원하는 데이터 통신 구조 2. 시스템 구성 약결합 (Loosely Coupled) 시스템 ...
운영체제에서 파일 시스템이란, 디스크 같은 저장 장치에 파일과 디렉터리 구조를 구성하여 데이터를 효율적으로 저장하고 관리하는 체계이다. 사용자는 이러한 논리적 구조를 통해 파일에 접근하며, 내부적으로는 각 파일마다 고유하게 존재하는 i노드(inode)에 저장된 메타데이터(metadata)를 기반으로, 운영체제가 물리적인 저장 장치에서 실제 파일 데이터...
01. 입출력 시스템 관리 1. 입출력 시스템/입출력 모듈/입출력장치 입출력 장치 (I/O Device) 가장 말단의 실제 물리적 장치 사용자와 실제로 데이터를 주고받는 대상 키보드, 마우스, 프린터, 디스크, 네트워크 카드 데이터를 물리적으로 입력받거나 출력하는 하드웨어 입출...
1. 가상 메모리 1. 가상메모리 모든 프로세스가 동시에 메모리를 전부 사용하는 것이 아니기 때문에, 논리 주소와 물리 주소 바인딩(MMU) 을 통해 당장 필요한 페이지만 물리 메모리에 올리고, 사용하지 않는 페이지는 디스크(보조기억장치)에 저장(swap) 해두는 방식으로, 프로세스에게는 실제 메모리보다 더 큰 공간을 제공하는 것처...
1. 메모리관리 1. 메모리 관리자 역할: 프로세스에 메모리를 할당, 해제하고 보호하는 운영체제 내 모듈 협업 대상: 운영체제의 메모리 관리 모듈 + 하드웨어(메모리 관리 장치, MMU) 주요 정책 적재 정책 (Loading Policy): 디스크에서 메모리로 프로세스를 언제 반입할지 결정 배치 정책 (Pl...
1. 스케줄링 1. 스케줄링 OS 스케줄링이란, 디스크에 저장된 작업을 메모리 내 준비 큐에 올리고, 그중에서 실행할 프로세스나 스레드를 선택하여 CPU에 할당하는 일련의 과정 좋은 스케줄링은 프로세서의 효율을 높이고, 작업의 응답시간을 최소하하여 시스템의 작업 처리능력을 향상시킴 2. 스케줄링 목적 자원 할당의 공정성 보장 단위...
1. 교착상태 1. 교착상태 둘이 상의 작업이 대기 상태로 중요한 자원을 사용하려고 기다릴때 발생함. 어떤 작업에 필요한 자원을 다른 작업이 점유하여 사용할 수 없어, 프로세스가 결코 일어나지 않을 사건을 기다릴때 교착상태에 빠졌다라고 표현함. 초기 일괄 처리 시스템에서는 사용자가 작업 제어카드에 작업을 완료하는데 필요한 자원을 명시해서 교착...
1. 병행프로세스 1. 독립 프로세스 다른 프로세스와 공유 메모리, 변수, 자원 등을 사용하지 않으며, 어떤 프로세스의 실행 여부나 결과에 영향을 주지도 받지도 않는 구조 종류 단일 프로그래밍 : 하나의 프로세스가 CPU를 점유하여 종료된 후 다음 프로세스를 실행 다중 프로그래밍 : 여러 프로세스가 메모리에 동시...
1. 스레드 스레드(Trhead)는 프로세스에서 작업을 실행하는 단위 스레드 한개가 들어가면 단일 스레드(SingleThread), 다수의 스레드가 들어가면 다중 스레드(Multi Thread) 다중 스레드(MUlti Thread)는 다수의 실행을 병렬로 진행할 수 있음. 2. 경량 프로세스 / 중량 프로세스 1. 경량 프로세스 (Li...
1. 프로세스 다중 프로그래밍 환경에서 여러 프로그램이 동시에 메모리에 적재되어 CPU를 공유하며 병행 실행되기 시작했고, 이 과정에서 각 실행 중인 프로그램을 구분하고 자원 할당/보호/스케줄링을 위해 운영체제가 도입한 관리 단위가 프로세스(Process) 프로세스의 일반적인 정의는 실행중인 프로그램 2. 프로그램과 프로세스 프로그램...
1. 운영체제 사용자와 하드웨어 사이에서 중간 매개체 역할을 하며, 응용 프로그램의 실행을 제어하고, 자원을 효율적으로 할당 및 관리함. 또한 입출력 제어와 데이터 관리를 포함한 다양한 서비스를 제공하는 소프트웨어 사용자에게 편리한 환경을 제공하고, 시스템 자원을 효율적으로 관리하여 성능을 극대화하며, 제어 서비스의 품질 향상을 위해 지속적으...
1. 생성(Creational) 패턴 🔍 1. Singleton (싱글톤) 항목 요점 문제정의 객체를 생성해야 하는데, 생성할 클래스가 유동적이거나 클라이언트가 어떤 구체 클래스를 생성해야 할지 모르거나 알 필요가 없을 때, 객체 생성을 어떻게 설계해야 하는가? ...
1. 디자인패턴 1. 디자인패턴 반복되는 설계 문제에 대해 검증된 해결 방법을 정리한 것 클래스/객체 구조를 정형화하여 유지보수성과 확장성을 높임 “이 상황엔 이런 식으로 설계하면 안정적이다”는 공통 패턴 GOF 패턴은 클래스/객체 단위 설계를 하고, 아키텍처, EIP, 동시성 등의 시스템/서비스 단위 설계를함. 2. 솔리드원칙(S...
1. SOLID 원칙 1. SOLID 원칙 유지보수가 쉽고, 확장 가능하며, 오류가 적은 소프트웨어를 만들기 위한 설계 지침 SOLID 원칙은 ‘좋은 객체지향 설계의 뼈대’이며, 소프트웨어 품질과 생산성을 높이기 위한 기본 철칙 2. SOLID의 시작 배경 요소 내용 ...
1. 절차지향 (Procedural Programming) 1. 정의 프로그램을 순차적인 절차(Procedure)와 함수(Function)의 흐름으로 구성하는 전통적인 프로그래밍 패러다임 데이터를 중심으로 여러 절차(로직)가 그 데이터를 처리하는 구조로 되어 있음 2. 핵심 개념 항목 절차지향 프로그...
1. try-with-resources 자원을 자동으로 닫아주는 try문 파일, 스트림, 소켓, DB 커넥션처럼 사용을 다 한 뒤에 close() 를 호출해서 반납해야 하는 객체들을 처리할 때 쓰는 구문 기본문법 try (자원 선언) { // 자원 사용 } catch (...) { // 예외 처리 } 2. ...
1. 자바 버전 1. 자바 종류 용어 의미 특징 JDK (Java Development Kit) 자바 개발 도구 컴파일러(javac), JVM 실행기(java), 표준 라이브러리 포함 Java SE (Standar...
1. JavaBean 1. JavaBean Sun(Java)에서 발표한 “재사용 가능한 컴포넌트” 규약 프레임워크가 자동으로 객체를 만들고 다루기 쉽도록 “클래스를 작성할 때 지켜야 하는 약속 2. JavaBean 규칙 조건 이유 / 목적 public 기본 생성...
1. 데이터 전달 / 저장 객체 종류 역할 / 특징 Servlet 환경 Spring 환경 VO (Value Object) 읽기 중심, DB 데이터 값 객체 DB 조회 후 HttpServletRequest에 담아 전달 DB...
1. 익명함수 1. 익명 함수란 이름 없이 정의되는 일회성 함수 주로 인터페이스나 클래스의 구현체로 사용 한 번만 사용되는 동작을 간결하게 구현 2. 자바에서 익명 함수 등장 배경 자바는 함수 자체를 독립적으로 정의하는 구조가 없음 (함수 = 클래스 메서드에 종속) 하지만 특정 행동(동작)을 전달해야 하는 상황이 많음 스레...