기록 111

Spring 프록시 원리

Spring의 프록시(Proxy)가 뭔지 제대로 이해해보자스프링을 공부하다 보면 "프록시"라는 말이 자꾸 나온다!@Transactional도 프록시, @Cacheable도 프록시, @Configuration도 프록시...도대체 프록시가 뭔지, 왜 쓰는 건지 알아보자!프록시가 뭘까?프록시를 한 마디로 표현하면 "진짜 객체 앞에 서서 호출을 가로채는 대리인" 이다.일상적인 비유로 설명하면 이렇다.팬 → 매니저(프록시) → 연예인(진짜 객체)팬이 연예인한테 직접 연락하는 게 아니라 매니저를 통해서 연락한다.매니저는 중간에서 "이 스케줄은 안 돼", "이건 전달할게" 같은 처리를 할 수 있다.코드로 보면 이렇다.// 프록시 없이 직접 호출UserService service = new UserService();s..

[클라우드 응용 SW 개발] 4,5주차

4주차: 클라우드 응용 SW 개념 정리1. 데이터의 구분데이터는 저장 방식에 따라 세 가지로 나뉜다.구조화 데이터: 행과 열로 구성된 테이블 형태. 스키마가 고정되어 있어 정형화된 데이터를 다루기에 적합하다.반구조화 데이터: JSON처럼 일정한 형식은 있지만 고정된 스키마가 없는 데이터.비구조화 데이터: 이미지, 음성, 영상처럼 형태가 정해지지 않은 데이터.2. 관계형 데이터베이스의 주요 객체2-1. 테이블 (Table)데이터가 실제로 저장되는 공간행(Row)과 열(Column)로 구성되며, 모든 행은 동일한 열 구조를 가진다각 열은 데이터 타입으로 정의된다 (예: INT, VARCHAR)2-2. 엔티티 (Entity)실제 존재하는 항목(고객, 제품)이나 가상의 항목(주문)을 나타낸다엔티티 간에는 관계(..

Weekly Paper #10

1. 계층별 입력값 검증 전략핵심 개념애플리케이션은 일반적으로 세 계층으로 나뉜다.Client → Presentation Layer (Controller) → Service Layer → Domain/DB Layer각 계층이 다른 이유로, 다른 관심사를 검증한다는 점이 핵심이다.이를 혼동하면 중복 검증이 생기거나, 반대로 특정 계층에서 검증이 누락되는 문제가 생긴다.계층별 책임 분리Presentation Layer (Controller/DTO)관심사: "이 데이터가 우리 시스템에 들어올 수 있는 형태인가?" (형식적 유효성)검증 대상:null / 빈 값이메일, 날짜 등 형식(Format) 오류기본적인 범위 위반 (수량 최솟값 등)public class CreateOrderRequest { @NotB..

Weekly Paper 2026.04.01

Docker 정리

OverviewDocker는 애플리케이션과 실행 환경을 컨테이너 단위로 패키징하여, 어디서든 동일하게 실행할 수 있도록 해주는 컨테이너 플랫폼이다. 2013년 dotCloud(현 Docker Inc.)에서 공개되었고, Linux Container(LXC) 계열 기술을 바탕으로 발전했다.Docker가 해결하려는 핵심 문제는 환경 불일치다."내 컴퓨터에서는 되는데요?"이 문제는 보통 OS, 런타임, 라이브러리 버전, 시스템 설정 차이에서 발생한다. Docker는 코드뿐 아니라 실행 환경 전체를 이미지로 패키징하여, 개발 환경과 운영 환경의 차이를 크게 줄인다.1. 왜 Docker를 쓰는가환경 불일치 문제 해결개발 환경과 운영 환경을 동일한 이미지로 통일할 수 있다.팀원이 바뀌어도 같은 명령으로 동일한 환경을..

Docker 2026.04.01

Weekly Paper #9

1. JPA N+1 문제✔️ N+1 문제란?연관된 엔티티를 조회할 때 1번의 쿼리 + N번의 추가 쿼리가 발생하는 문제이다.List members = memberRepository.findAll();for (Member member : members) { System.out.println(member.getTeam.getName());}👉 실제 쿼리 흐름SELECT * FROM member;--- N번 (각 member의 team 조회)SELECT * FROM team WHERE id =?:-> 데이터의 개수가 많아질수록 성능 급격히 저하됨!🔥 JPA N+1 문제 발생 원인1. 지연 로딩 (Lazy Loading)의 동작 방식연관된 객체를 즉시 조회하지 않고, 실제 해당 객체에 접근(사용)하는 ..

Weekly Paper 2026.03.23

MapStruct

📌 1. MapStruct란?MapStruct는 객체 간 매핑 코드를 자동으로 생성해주는 라이브러리이다.주로 다음과 같은 상황에서 사용된다.DTO ↔ Entity 변환API 요청/응답 객체 변환계층 간 데이터 전달👉 핵심:반복적인 매핑 코드를 자동화하여 생산성과 안정성을 높인다.❗ 2. 기존 방식의 문제점✔️ 수동 매핑UserDto dto = new UserDto();dto.setName(user.getName());dto.setAge(user.getAge());❌ 문제점코드 반복 많음실수 발생 가능유지보수 어려움✔️ ModelMapper (대안)리플렉션 기반 자동 매핑❌ 문제점성능 저하런타임 에러 발생 가능디버깅 어려움✅ 3. MapStruct의 핵심 특징✔️ 1. 컴파일 시 코드 생성실행 전에 매..

[클라우드 응용 SW 개발] 2,3주차

🐧 Linux 개념✔️ 리눅스란?리눅스는 1991년 리누스 토르발스가 개발한 오픈소스 운영체제이다.서버, 데스크탑, IoT 등 다양한 환경에서 사용된다.✔️ 리눅스 특징오픈소스 (무료, 수정 가능)멀티유저 / 멀티태스킹강력한 네트워크 기능다양한 파일 시스템 지원✔️ 리눅스 배포판대표적인 배포판:Ubuntu (사용자 친화적)CentOS (기업용)Debian (안정성)RedHat (유료 기업용)☁️ 클라우드에서 Linux 서버✔️ Azure에서 LinuxAzure는 다양한 리눅스 배포판을 제공한다.UbuntuCentOSDebianRedHatSUSE🔥 실습: Azure에서 Linux 서버 생성✔️ 전체 흐름✔️ STEP 1. 가상 머신 생성Azure Portal 접속Virtual Machine 생성✔️ S..

[클라우드 프로그래밍] 2주차

1. 서버(Server)란?✔️ 서버의 정의서버는 네트워크에서 데이터나 서비스를 제공하는 컴퓨터이다.반대로 클라이언트는 해당 서비스를 사용하는 프로그램이다.👉 핵심 구조서버: 데이터 제공클라이언트: 요청 수행✔️ 서버 동작 방식 (중요)서버는 항상 다음 구조로 동작한다.웹 브라우저 → 웹 서버 요청 → 페이지 반환👉 모든 서비스(웹, 게임, SNS)는 이 구조 동일웹 서버(Web Server)✔️ 웹 서버란?웹 서버는 웹사이트 데이터를 저장하고 제공하는 서버이다.구성 요소:HTML (구조)CSS (디자인)JavaScript (동작)이미지 파일👉 AWS에서는 EC2 또는 ECS로 웹 서버 구축✔️ 웹 서버 동작 방식사용자가 URL 요청서버가 데이터 처리결과 반환👉 통신 프로토콜:HTTP / HTTP..

[클라우드 활용] 2주차

1. 실습 목적이번 실습에서는 AWS Management Console의 기본 구조를 이해하고,리전 변경 및 대시보드 확인을 통해 AWS 리소스 관리 방식을 학습하였다.또한 AWS CloudShell을 활용하여 CLI 기반으로 S3 및 EC2 리소스를 조회하는 방법을 실습하였다.2. AWS 접근 방식 정리AWS는 다양한 방식으로 접근할 수 있다.API: 프로그램이 직접 호출SDK: 개발 언어 기반 접근 (Python, Java 등)CLI: 터미널 명령어 기반Management Console: 웹 GUI 기반초보자 입장에서는 Management Console → CLI 순서로 학습하는 것이 효율적이다.📸 3. AWS Management Console이란?AWS Management Console은 웹 기반..

Findex - 개인 개발 리포트

1. 프로젝트 개요Findex는 외부 API를 활용하여 금융 지수 데이터를 수집하고, 이를 효율적으로 관리 및 시각화하는 금융 분석 대시보드 프로젝트입니다.본 프로젝트에서는 다양한 금융 지수 데이터를 API를 통해 연동하고, 데이터베이스에 저장한 뒤 사용자에게 한눈에 확인할 수 있는 형태로 제공하는 기능을 구현하였습니다.외부 데이터 수집, 데이터 처리 및 저장, 그리고 사용자에게 제공하는 전체 흐름을 직접 설계하고 구현하는 경험을 목표로 한 초급 프로젝트입니다. 2. 담당한 작업지수 정보 Controller - Service - Repository 구현하였습니다.지수 정보 외부 API 연동공공 데이터 포털 API로 부터 응답 데이터를 수신한 후, 이를 지수 정보 엔티티로 변환하는 로직을 구현하였습니..

Project/Findex 2026.03.20