분류 전체보기 57

개념 정리 | Spring MVC, 어노테이션, IoC의 시작, Apache tomcat

Spring MVCView : 화면Controller : View - Model 중간 매개체Model : 데이터 연산(DB 소통), 로직 Repository, Service (상세 역할) 어노테이션어노테이션의 역할 "아래 세 친구에게 알려주기"1. 컴파일러에게 ex. @Override2. 빌드도구에게 ex. @Getter3. 프레임워크에게 ex. @스프링아 아래 클래스를 스프링빈으로 니가 관리해줘 IoC의 시작객체를 부탁해 생성부터 관리까지 2가지 방법= 이 클래스를 이제 스프링 빈으로 좀 관리해줬으면 좋겠어= 이 클래스를 스프링 빈으로 (컨테이너에) 등록해줘= 이 클래스를 객체로 생성해서 스프링 빈으로 등록해줘 1. @Component class _______ {2. @..

카테고리 없음 2025.05.09

스프링의 주요원리 (IoC, 컨테이너, 스프링빈, DI)

스프링의 주요 원리1. IoC2. 컨테이너3. 스프링빈4. DI IoC (Inversion of Control) 제어의 역전inverse : 정반대로 뒤집힌다. control : 제어 "프로그램의 흐름 = 객체의 흐름" = 객체의 제어권을 정반대로 뒤집는다. (스프링이 객체에 대한 제어권(생성, 사용, 라이프사이클)을 가진다 - 기존에는 개발자가 제어권을 가지고 있었다.) 스프링이 객체를 생성해서 관리를 하기위해 (스프링/IoC/DI)컨테이너를 준비스프링이 관리하는 객체 = 스프링 빈 DI (Dependency Injection) 의존성 주입의존한다 = 사용한다 / 의존성 = 사용할(하는) 것 = 객체개발자 : 주입받는다스프링 : 주입해준다 객체를 사용한다. = 객체를 생성해서 메소드/필드를 호출..

카테고리 없음 2025.05.09

🌐 클라우드 네이티브 관점에서 바라본 인프라 & DevOps 핵심 요약2

✅ Cloud Native란?Cloud Native는 클라우드 컴퓨팅 환경에 최적화된 애플리케이션을 설계, 개발, 배포, 운영하는 접근 방식이다.최신 기업은 고객의 요구에 빠르게 대응할 수 있는 확장성, 탄력성, 장애 격리성을 갖춘 앱을 추구하며, Cloud Native는 이를 실현하기 위한 핵심 전략이다.Cloud Native의 핵심 요소Microservices 기반: 단일 블록(monolith)이 아닌 기능별로 나뉜 소규모 서비스들의 조합컨테이너 기반: Docker, Kubernetes를 활용해 경량화된 가상 환경 구성DevOps 문화: 개발과 운영의 협업을 통한 지속적인 개선자동화된 배포 파이프라인: CI/CD 시스템으로 신속한 배포 실현✅ Cloud Native의 장점1. 효율성 증가DevOps,..

🌐 클라우드 네이티브 관점에서 바라본 인프라 & DevOps 핵심 요약

✅ API란 무엇인가?**API (Application Programming Interface)**는 애플리케이션 간 상호작용을 가능하게 하는 인터페이스다.서버와 클라이언트 간, 또는 서로 다른 서비스 간의 데이터를 주고받기 위해 사용된다.예: 프론트엔드에서 백엔드로 주문 내역을 요청할 때 API를 통해 통신한다. ✅ API란 무엇인가?**API (Application Programming Interface)**는 애플리케이션 간 상호작용을 가능하게 하는 인터페이스다.서버와 클라이언트 간, 또는 서로 다른 서비스 간의 데이터를 주고받기 위해 사용된다.예: 프론트엔드에서 백엔드로 주문 내역을 요청할 때 API를 통해 통신한다. ✅ 실습 시 강점이 되는 포인트💡 Apache Kafka데이터 스트리밍 처리에..

record vs @Data, @RestController vs @Controller, @RequiredArgsConstructor, Stream, JDBC, 테스트 코드까지 실무 예제로 정리

✅ @Data vs record: DTO 작성 방식 비교Lombok의 @Data@Datapublic class MemberDto { private Long id; private String email; private String nickname; private LocalDate birthday;} @Getter, @Setter, @ToString, @EqualsAndHashCode, @RequiredArgsConstructor 등을 한 번에 생성해주는 Lombok 애노테이션입니다.가변(mutable) 객체를 만들 수 있음. Java 14+의 recordrecord는 Java 14 이상에서 사용할 수 있는 간단한 DTO 정의 방식입니다. 모든 필드는 final로 선언되며, 불변성을 자..

대용량 처리를 위한 MySQL 이해 | MySQL

https://db-engines.com/en/ranking DB-Engines RankingPopularity ranking of database management systems.db-engines.com웹 백엔드 개발을 하다 보면 대부분의 데이터는 관계형 데이터베이스에 저장하게 된다.그중에서도 MySQL은 가장 많이 사용되는 오픈소스 관계형 DB다.그래서 이번 글에서는 내가 강의를 들으면서 정리한 MySQL의 핵심 구조와 작동 방식을 쉽고 간단하게 풀어보려고 한다. 1. 왜 MySQL인가?가장 인기 있는 오픈소스 관계형 데이터베이스 (DB-Engines 기준 상위권)접근성과 학습 비용이 낮고, 무료로 사용할 수 있음SQL 표준을 비교적 잘 따르기 때문에 다른 DB와도 큰 차이가 없다. 2. 웹의 ..

대용량 처리를 위한 MySQL 이해 | 실습 환경 구축, 대용량 시스템에 대한 이해

✅ 대용량 데이터를 안정적으로 다루기 위한 기본 질문"어떻게 하면 많은 양의 데이터를 안정적으로 삽입하고, 갱신하고, 조회할 수 있을까?"이 질문에 답하기 위해 우리가 고려해야 할 키워드는 다음과 같다:정규화: 데이터 중복을 줄이고, 관계를 명확하게 설계한다.인덱스: 자주 조회되는 컬럼에 인덱스를 걸면 검색 속도가 훨씬 빨라진다.트랜잭션: 데이터 변경 작업이 중간에 실패하더라도 전체 작업의 일관성을 유지하게 해준다.동시성 제어: 여러 사용자가 동시에 같은 데이터를 수정할 때 충돌 없이 처리할 수 있도록 한다.🧪 실습 환경 구축macOS 환경에서 MySQL을 사용하는 경우, Homebrew로 간단히 설정 가능하다. # mysql 실행brew services start mysql# mysql 상태 확인br..

FastAPI 기반 챗봇 프로젝트에서 로그인 인증 및 RDB 파트 구현기

이번 프로젝트에서는 FastAPI 기반의 챗봇 서비스에서 로그인 인증 처리와 RDB 연동을 맡아 구현하였다. 사용자 요청 흐름의 핵심이 되는 부분이었기 때문에, 명확한 데이터 흐름과 보안 설계가 중요했다. ⚙️ 왜 FastAPI를 선택했는가?이 프로젝트에서는 FastAPI 프레임워크를 채택하였다. 여러 선택지가 있었지만, FastAPI를 사용한 이유는 다음과 같다:비동기 처리 최적화FastAPI는 Python의 asyncio 기반으로 동작하여, I/O 처리에 강점을 가진다.챗봇처럼 빠르게 응답을 주고받아야 하는 서비스에서는 API 응답 속도가 매우 중요하다.비동기 요청과 DB 쿼리를 동시에 처리할 수 있어 병렬성 측면에서도 유리하다.Pydantic을 통한 데이터 검증요청/응답 스키마를 명확하게 정의할 수..

토이 프로젝트 3 | Fast API를 활용한 OpenAI 챗봇 개발 (RDB 파트)

💡 AI 챗봇 프로젝트 정리 – FastAPI와 함께한 나의 RDB 파트 개발기최근 우리 팀에서는 쇼핑몰 서비스에 AI 챗봇을 연동하는 프로젝트를 진행하고 있다.사용자가 자연어로 질문하면, 챗봇이 의도를 파악하고, RAG 방식으로 RDB에서 데이터를 조회해 LLM에 전달하여 자연스러운 응답을 생성하는 구조다.🧠 프로젝트 흐름사용자 질문 → 의도 분류 → RDB 쿼리 수행 → LLM 응답 구성 → 사용자에게 자연어 응답FastAPI: 비동기 API 서버MySQL: 쇼핑몰 서비스의 주요 데이터 저장databases + aiomysql: 비동기 DB 연결LangChain / GPT 기반 LLM: 응답 생성Spring Boot: 로그인 인증 및 JWT 토큰 발급🔧 내가 맡은 역할나는 팀에서 RDB 파트를 ..

Spring DI (의존성 주입, Dependency Injection)

변경에 유리한 코드1 - 다형성, factory method 변경에 유리한 코드2 - Map과 외부파일수정사항이 있을 때, 코드는 변경하지 않고 파일만 변경하는 것은 굉장한 이점이다. 코드를 변경하게 되면, 결국 코드에 대한 테스트를 해봐야하기 때문에.프로그램의 변경을 어떻게 최소화할 지 고민해보는 것이 중요하다.  프로그램을 변경시키지 않기 위해 변경포인트를 최대한 분리시키는게 중요하다. 분리는 (1) 변하는 것, 변하지 않는 것의 분리           (2) 관심사의 분리           (3) 중복코드의 분리 (AOP)  더보기Main1.javapackage com.fastcampus.ch3.diCopy1;import java.io.FileReader;import java.io.IOExcepti..