-
시스템 설계 기초 (로드밸런스, 메세지 큐, CDN, DNS 등)
아래의 내용은 을 바탕으로 정리한 내용입니다. 사용자는 웹 브라우저나 모바일 앱을 통해 도메인 이름을 이용하여 웹사이트에 접속한다. 이 접속을 위해서 DNS에 질의하여 IP주소로 변환하는 과정이 필요하다.DNS(Dmain Name Service) : 도메인 이름을 IP주소로 반환한다. ex) www.test.com -> 100.100.100.100정적 콘텐츠 (JS, CSS, 이미지 등)은 웹서버를 통해 서비스하지 않고 CDN을 통해 제공하여 더 나은 성능을 보장한다. CDN(콘텐츠 전송 네트워크) : 정적 네트워크를 전송하는데 쓰이는, 지리적으로 분산된 서버의 네트워크로 JS, CSS, 이미지 등을 캐시할 수 있다.CDN 사용시 고려해야 할 사항 : 적절한 만료 시한 설정, 비용, 장에 애 대..
2024.08.12
-
[HTTP] 인터넷 네크워크 (IP(인터넷 프로토콜), TCP/UDP, PORT, DNS)
인터넷 프로토콜 스택의 4계층인터넷 프로토콜 스택의 4계층을 간략하게 보면 위와 같다. 이를 좀 더 뜯어보자. 인터넷 프로토콜(Internet Protocol, IP)인터넷 프로토콜(Internet Protocol, IP)은 컴퓨터 네트워크에서 데이터를 주고받는 데 사용하는 규약이다.IP는 인터넷의 핵심 프로토콜로, 모든 인터넷 트래픽의 전달을 담당한다.IP 주소를 사용하여 발신지와 수신지를 식별하고, 데이터를 패킷(packet)이라는 작은 단위로 나누어 전송한다.인터넷에서 데이터를 주고 받기 위해서 각자 전송과 송신이 가능한 식별자가 필요한데, 그 중 하나가 IP이다. 인터넷 프로토콜(Internet Protocol, IP) 주요 개념 IP 주소IPv4 (Internet Protocol version..
2024.08.05
-
[스프링(Spring)] 롬복(Lombok) (롬복이란 / 자주 쓰는 기능 / @Data 사용을 지양해야 하는 이유 등)
롬복(Lombok) 이란?롬복(Lombok)은 자바 개발자들이 코드 작성을 더욱 편리하게 할 수 있도록 도와주는 라이브러리이다. 롬복(Lombok)의 특징컴파일 시점에 코드를 추가한다.별도의 라이브러리를 추가로 설치해야 한다.IDE의 플러그인을 지원한다. [자주 쓰는 기능] @Getter, @Setter클래스의 필드에 대한 getter, setter 메서드를 자동으로 생성해 준다.코드의 양을 줄이고, 가독성을 높일 수 있다.[사용전]public class User { private String name; private int age; public String getName() { return name; } public void setName(String name) ..
2024.08.02
-
[스프링(Spring)] HTTP 요청 메시지를 통해 클라이언트에서 서버로 데이터를 전달하는 방법 (@RequestParam, @RequestBody, @ModelAttribute 이해하기)
HTTP 요청 메시지를 통해 클라이언트에서 서버로 데이터를 전달하는 가장 많이 사용하는 3가지 방법과 스프링과 연계하여 @RequestParam, @RequestBody, @ModelAttribute 어노테이션에 대해 이해해보자! [HTTP 요청 메시지를 통해 클라이언트에서 서버로 데이터를 전달하는 방법]가장 많이 사용하는 3가지 방법을 정리하였다. 1. GET - 쿼리 파라미터 형식으로 요청하기HTTP message body 없이, URL의 쿼리 파라미터에 데이터를 포함해서 전달하는 방식이다.요청형태 -> /url?username=hello&age=20검색, 필터, 페이징 등에서 많이 사용한다.*** 이 때 주로 사용하는 (혹은 적절한) 스프링 어노테이션@RequestParam@GetMapping(..
2024.08.02
개발일지를 씁니다.
-
[개발일지 #046] 도커(Docker)로 MSA 통합 실행 환경 구축하기 (+ 자동화 스크립트)
✨ 왜 도커(Docker)로 MSA 통합 실행 환경 구축하는지현재 BookBookClub 프로젝트는 MSA 기반으로 구성되어 있어서 서비스가 user, post, notification, gateway 등 여러 개로 나뉨.근데 개발하거나 테스트할 때 각각 IntelliJ에서 따로 켜는 게 너무 번거롭고 비효율적이여서 Docker + docker-compose로 한 번에 통합 실행되게 설정함!Docker: 애플리케이션을 컨테이너라는 단위로 포장해 어디서든 실행 가능하게 해주는 도구.Docker Compose: 여러 컨테이너를 정의하고 한 번에 실행할 수 있는 설정 파일(docker-compose.yml) 포맷. 🛠️ 구현 방법1. 각 서비스에 Dockerfile 작성# 1. Java 17이 설치된 베이..
2025.06.18
-
[개발일지 #045] Spring Cloud Gateway를 이용한 인증 구조 통합하기
🎯 오늘의 개발 내용 (요약)Spring Cloud Gateway를 이용한 인증 구조 통합하기 ✅ Spring Cloud Gateway란?API 요청의 진입점(Gateway)을 담당하는 경량 프록시 서버임.API 요청 흐름을 제어하거나, 공통 처리를 전담하는 데 사용되며, 그 중에서도 GlobalFilter 를 통해 모든 요청에 공통 로직(JWT 인증 등)을 적용할 수 있음. ✅ 도입이유 기존에는 각 서비스(user, post 등)가 직접 JWT 토큰을 검증했기 때문에 중복된 인증 로직이 생기고 코드가 분산되어 관리가 어렵고 마이크로서비스가 늘어날수록 유지보수가 힘들어지는 구조임.그래서! JWT 인증 책임을 Gateway로 통합하여 코드 중복 제거 인증 흐름 중앙 집중화 구조를 더 단순하고 안정적으로 ..
2025.06.18
-
[개발일지 #044] 알림 서비스 만들기 (Kafka 활용)
🎯 오늘의 개발 내용 (요약)Kafka 알림 시스템 구현 🧩 도입 배경BookBookClub은 책에 대한 피드와 소셜 기능을 제공하는 SNS로, 피드 작성, 좋아요, 팔로우 이벤트에 대해 사용자에게 실시간 알림을 제공하고자 알림 기능을 구현하게 되었음. 🏛️ 아키텍처 구조[post-service / user-service] --> Kafka Event 발행 --> [notification-service] 소비 및 저장 post-service: 피드 작성/좋아요 발생 시 Kafka 이벤트 발행user-service: 팔로우 생성 시 Kafka 이벤트 발행notification-service: Kafka Listener로 이벤트 수신 → DB 저장즉, notification-service로 별도 모듈을..
2025.06.17
매월, 매년 회고를 씁니다.
-
2025년 6월 회고
진짜 처음으로 제 인생의. 첫 살짝 Heartbreak. [개발분야]사이드 프로젝트 하는 중3올해 봄에 시작했던 사이드 프로젝트. 중간에 시험기간 같은 행사로 멈춘 적도 있었지만, 6월까지 개발 열심히 했다. 현업에서 경험할 수 없었던 혹은 경험했더라도 어설프게 사용하거나, 직접 설계 해본 적이 없었던 기술 위주로 많이 배우고, 연습하는 시간이었다. 내가 원했던 1차적인 형태는 나온 것 같아 나중에 프론트엔드를 손을 볼까 고민 중이지만 일단은 6월까지 하고 잠시 쉬기로...!저의 사이드프로젝트에 대한 내용이 궁금하시다면 아래의 링크를 확인해주세요! GitHub - ddururiiiiiii/BookBookClub-MSA: 북북클럽 (MSA)북북클럽 (MSA). Contribute to ddururiiii..
2025.06.30
-
2025년 5월 회고
[개발분야]사이드 프로젝트 하는 중222225월 중순부터는 시험 일정 때문에 잠시 중단했지만 그래도 5월 초까지는 사이트프로젝트를 열심히 했다지. [개발일지 #035] 모놀리식 아키텍처를 MSA 아키텍처로 전환하기 (1) - bbc-user-service (User, EmailValidation,🎯 오늘 개발 할 기능모놀리식 아키텍처를 MSA 아키텍처로 전환하기🛠️ 개발내용✅ 모놀리식, MSA 아키텍처가 무엇인지 왜 MSA로 전환하려는지에 대한 내용을 아래의 포스팅을 확인! 모놀리식ddururiiiiiii.tistory.com 기말고사를 준비 중6월 초에 기말시험을 앞두고 있어 5월의 절반 이상은 기말시험 준비하는 데에 많은 시간을 쏟았다. 점점 학기가 지나갈수록 시험이 더 부담되는 건 왜일까.....
2025.06.01
-
2025년 4월 회고
[개발분야]드디어 멘토링 후기 씀몇 개월간 나의 회고에도 지겹도록 나왔던 그 '멘토링'. 얼마 전 드디어 후기를 업로드했다. 내가 어떤 생각과 마음으로 멘토링을 진행하게 되었고, 어떤 과정을 거쳤고, 그 멘토링을 통해서 어떤 것을 배웠는지 최대한 상세히 그리고 솔직히 서술하려 노력했다. 아마 이 글을 읽는다면 멘토링을 한 번쯤 고민해 본 분들일 테니 그분들에게 조금이나마 도움이 되기를...! [에프랩(F-lab)] Java Backend 과정 수료 후기[들어가는 글]나는 24년 11월부터 25년 3월까지의 에프랩 자바 백엔드 멘토링 과정을 수료하였고, 기록 차원에서 후기를 남겨보고자 한다. [에프랩을 하기 전, 나의 상황은 이러했다.]나는 비교적ddururiiiiiii.tistory.com 드디어 중..
2025.05.01