url: https://inpa.tistory.com/entry/JAVA-%E2%98%95-%EC%8B%B1%EA%B8%80%ED%86%A4-%EA%B0%9D%EC%B2%B4-%EA%B9%A8%EB%9C%A8%EB%A6%AC%EB%8A%94-%EB%B0%A9%EB%B2%95-%EC%97%AD%EC%A7%81%EB%A0%AC%ED%99%94-%EB%A6%AC%ED%94%8C%EB%A0%89%EC%85%98 title: "☕ 싱글톤 객체가 깨져버리는 경우 (역직렬화 / 리플렉션)" description: "싱글톤 객체 싱글톤 객체는 단 하나의 유일한 객체를 의미 한다. 해당 인스턴스가 리소스를 많이 차지하는 무거운 인스턴스일때, 메모리 절약을 위해 인스턴스가 필요할 때 똑같은 인스턴스를 새로 만들지 않고 기존의 인스턴스를 가져와 활용하는 기법이다. 아래는 싱글톤 디자인 패턴을 구현하는 방법중 멀티쓰레드 환경에서 안전하고 검증된 방법인 Bill Pugh Solution 방법으로 구현한 싱글톤 객체이다. [GOF] 💠 싱글톤(Singleton) 패턴 - 꼼꼼하게 알아보자 Singleton Pattern 싱글톤 패턴은 디자인 패턴들 중에서 가장 개념적으로 간단한 패턴이다. 하지만 간단한 만큼 이 패턴에 대해 코드만 던져주고 끝내버리는 경우가 있어, 어디에 쓰이는지 어떠한 문 inpa.tistory.com cla.." host: inpa.tistory.com favicon: https://tistory2.daumcdn.net/tistory/4939852/5c9a55d8962c4e0fbe6292153897ff69 image: https://img1.daumcdn.net/thumb/R800x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcz5Q6D%2FbtrWskt3e15%2FzdQ9nXFRDVjkgpStEfZKKk%2Fimg.webp url: https://inpa.tistory.com/entry/GOF-%F0%9F%92%A0-%EC%8B%B1%EA%B8%80%ED%86%A4Singleton-%ED%8C%A8%ED%84%B4-%EA%BC%BC%EA%BC%BC%ED%95%98%EA%B2%8C-%EC%95%8C%EC%95%84%EB%B3%B4%EC%9E%90 title: "💠 싱글톤(Singleton) 패턴 - 꼼꼼하게 알아보자" description: "Singleton Pattern 싱글톤 패턴은 디자인 패턴들 중에서 가장 개념적으로 간단한 패턴이다. 하지만 간단한 만큼 이 패턴에 대해 코드만 던져주고 끝내버리는 경우가 있어, 어디에 쓰이는지 어떠한 문제가 있는지 제대로 알지 못하고 얼렁뚱땅 넘어가버리는 것이 많아 보인다. 이번 시간에는 기술면접의 단골 질문이면서 간단하지만 결코 간단하지 않은 디자인 패턴의 싱글톤 패턴에 대해 꼼꼼하게 알아가 보는 시간을 가져보자. 싱글톤 패턴이란 단 하나의 유일한 객체를 만들기 위한 코드 패턴이다. 쉽게 말하자면 메모리 절약을 위해, 인스턴스가 필요할 때 똑같은 인스턴스를 새로 만들지 않고 기존의 인스턴스를 가져와 활용하는 기법을 말한다. 우리가 전역 변수라는 걸 만들어 이용하는 이유는, 똑같은 데이터를 메서드마다 .." host: inpa.tistory.com favicon: https://tistory2.daumcdn.net/tistory/4939852/5c9a55d8962c4e0fbe6292153897ff69 image: https://img1.daumcdn.net/thumb/R800x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNrRvg%2FbtrQf4LcPIO%2FSSDINbnfv74c2mOMurKRCk%2Fimg.webp url: https://st-lab.tistory.com/153 title: "자바 [JAVA] - 제네릭(Generic)의 이해" description: "정적언어(C, C++, C#, Java)을 다뤄보신 분이라면 제네릭(Generic)에 대해 잘 알지는 못하더라도 한 번쯤은 들어봤을 것이다. 특히 자료구조 같이 구조체를 직접 만들어 사용할 때 많이 쓰이기도 하고 매우 유용하기도 하다. 잠깐 그럼 제네릭(Generic)이란 무엇인지에 대해 알고 가보도록 하자. 제네릭(Generic)은 직역하자면 '일반적인'이라는 뜻이다. 음.. 한 번에 이해가 가진 않는다. 조금 더 부연설명을 하자면 '데이터 형식에 의존하지 않고, 하나의 값이 여러 다른 데이터 타입들을 가질 수 있도록 하는 방법'이다. 우리가 흔히 쓰는 ArrayList, LinkedList 등을 생성할 때 어떻게 쓰는가? 객체 객체명 = new 객체(); 이렇게 쓰지 않는가? 즉, 아래와 같이 여러 .." host: st-lab.tistory.com favicon: https://t1.daumcdn.net/tistory_admin/favicon/tistory_favicon_32x32.ico image: https://img1.daumcdn.net/thumb/R800x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbdIB4P%2FbtqLkg4MkMz%2FwAr2qqENgDNYQHRxh3nwx0%2Fimg.jpg url: https://0soo.tistory.com/28 title: "MVC 패턴 , 5 Layer 패턴" description: "유튜브 우아한 Tech 채널에서 10분 테코톡을 듣고 공부한 내용입니다. 목차 MVC 패턴이란, Model, View, Controller Service Layer MVC를 지키면서 코딩하는 방법 5 Layer References MVC 패턴이란 * 출처 : 위키피디아 MVC 패턴 Model & View & Controller로 애플리케이션을 3가지 역할로 구분한 개발 방법론 MVC 패턴이 나오기 이전의 웹 어플리케이션의 아키텍쳐 모델 1 아키텍처 출처 구성 : JSP + JavaBean(Service) 한 페이지가 뷰 + 로직으로 이루어져 있다. - 뷰와 로직이 섞인다. 장점 : 개발이 쉽고 구조가 간단하다. 단점 : 코드가 복잡해져서 유지보수가 상당히 까다롭다. 프론트와 백엔드의 분업이 힘들다. 모델.." host: 0soo.tistory.com favicon: https://t1.daumcdn.net/tistory_admin/favicon/tistory_favicon_32x32.ico image: https://img1.daumcdn.net/thumb/R800x0/?scode=mtistory2&fname=https%3A%2F%2Ft1.daumcdn.net%2Ftistory_admin%2Fstatic%2Fimages%2FopenGraph%2Fopengraph.png fsd 패턴 (프론트엔드) url: https://murphymoon.tistory.com/entry/%EC%9A%B0%EC%95%84%ED%95%9C-%ED%85%8C%ED%81%AC-MVC-%EB%A6%AC%EB%B7%B0-%EB%A0%88%EC%9D%B4%EC%96%B4-MVC-%ED%8C%A8%ED%84%B4-5%EB%A0%88%EC%9D%B4%EC%96%B4 title: "우아한 테크 -MVC 패턴 리뷰- [레이어, MVC 패턴, 5레이어]" description: "발표자료들 범블비(2020) : MVC 패턴에 대한 설명 + MVC 패턴의 역사 제리(2021) : MVC 패턴의 활용성에 대한 원칙 해리&션(2019) : MVC의 Model, Controller, View에 대한 소개. 제이임(2019)의 MVC 패턴 : 미션과 관련된 설명이라서 이해하기가 좀 힘들다. [ 의미 있는 부분이 있다. ] 다 10분 정도의 발표이고 각각 MVC를 다른 관점으로 소개해주기에 모든 발표자료를 참고하는 것을 권한다. 역사 [ 1979년 GUI 데스크톱 애플리케이션이 등장하면서 생긴 패턴! ] 사람-컴퓨터 간의 간극을 해결하기 위함. 도메인의 재사용을 목적으로 둔다. 입력 & 이벤트 & 출력 메커니즘을 자연스럽게 처리하기 위함이다. 1980년대는 개인 컴퓨터(PC)의 등장이 시작.." host: murphymoon.tistory.com favicon: https://t1.daumcdn.net/tistory_admin/favicon/tistory_favicon_32x32.ico image: https://img1.daumcdn.net/thumb/R800x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcCnT76%2Fbtrj1Lwkxok%2F9S7kEj0KgFXsaAs4ov8Tkk%2Fimg.png url: https://co-no.tistory.com/entry/Java-Spring-%ED%94%84%EB%A0%88%EC%9E%84%EC%9B%8C%ED%81%AC%EC%97%90%EC%84%9C%EC%9D%98-MVC-%ED%8C%A8%ED%84%B4%EA%B3%BC-Service-DAO-DTO-VO-%EA%B0%9C%EB%85%90 title: "[Java] Spring 프레임워크에서의 MVC 패턴과 레이어드 아키텍처" description: "1. MVC 패턴이란? : 소프트웨어 공학에서 사용되는 소프트웨어 디자인 패턴의 한 종류를 말하는데, Model-View-Controller의 약자이다. 이 패턴을 사용하는 궁극적인 목적은, 사용자 인터페이스(Interface)로부터 비즈니스 로직(Logic)을 분리함으로써, 애플리케이션의 시각적 요소와 그 이면에서 실행되는 비즈니스 로직 간에 영향을 최소한으로 줄여, 프로그램의 유지 보수성을 높이고, 성능을 향상시키는 데에 있다. 2. MVC 패턴의 구성 요소와 원칙 모델(Model) : 데이터와 관련된 책임을 담당하는 레이어 - [POJO] 비즈니스 로직을 수행한다. - 주로 상태 변화를 처리한다. (최근에는 Entity, VO, Aggregate로 나누어서 관리한다. -> 도메인 주도 설계) - 데.." host: co-no.tistory.com favicon: https://t1.daumcdn.net/tistory_admin/favicon/tistory_favicon_32x32.ico image: https://img1.daumcdn.net/thumb/R800x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FMySLQ%2FbtrQcNbjNya%2Fufkk26MwTgTzxIJQKrJK01%2Fimg.png url: https://velog.io/@msung99/%EC%86%8C%ED%8A%B8%EC%9B%8D%EC%8A%A4-%EC%97%94%EC%86%94%EB%A1%9C%EC%A7%80%EC%9D%98-%EA%B0%9D%EC%B2%B4%EC%B9%98%ED%96%A5-%EC%83%9D%ED%99%9C%EC%B2%B4%EC%A1%B0-%EC%9B%90%EC%B9%99-%EC%A0%84%EB%B0%98%EB%B6%80 title: "소트웍스 엔솔로지의 객체치향 생활체조 원칙 전반부" description: "객체지향 생활체조 원칙의 전반부를 알아보자!" host: velog.io favicon: https://static.velog.io/favicons/favicon-32x32.png image: https://velog.velcdn.com/images/msung99/post/c575e3f0-a1e2-43cf-b9a4-e711ed3b03ca/image.png Fetching Data#cokf url: https://jee00609.github.io//pronunciationcorrection/pronunciationCorrection-ETRIAPI-Error/ title: "ETRI 공공 인공지능 오픈 API 발음 교정 - ETRI API 발음 평가 사용법" description: "발음 교정 프로그램의 소개 다음으로 말하고 싶었던 건 ETRI API 를 사용하는 방법을 말하는 것이다." host: jee00609.github.io favicon: https://jee00609.github.io/assets/favicon/android-icon-192x192.png url: https://velog.io/@pgmjun/%EB%A6%AC%EB%B2%84%EC%8A%A4-%ED%94%84%EB%A1%9D%EC%8B%9C-%EC%84%9C%EB%B2%84%EB%A5%BC-%ED%86%B5%ED%95%B4-WAS-%EC%A0%95%EB%B3%B4-%EB%B3%B4%ED%98%B8%ED%95%98%EA%B8%B0-feat.-Nginx title: "리버스 프록시를 통해 SpringBoot 서버 정보 보호하기 (feat. Nginx)" description: "Proxy라는 단어는 대리(행위)나 대리권, 대리 투표, 대리인 등을 뜻하며 말 그대로 서버 요청에 대한 대리자 역할을 수행하는 것을 프록시 서버라고 한다.프록시 서버(Proxy Server)는 클라이언트와 서버 사이에서 동작하는 중간 서버를 의미한다." host: velog.io favicon: https://static.velog.io/favicons/favicon-32x32.png image: https://velog.velcdn.com/images/pgmjun/post/8c901f66-6ebe-47f0-ab49-c327ad2dbb77/image.png url: https://velog.io/@mooh2jj/%EC%9B%B9%EA%B0%9C%EB%B0%9C%EC%9E%90%EC%9D%98-%EC%B1%85%EA%B0%95%EC%9D%98-%EC%A0%95%EB%A6%AC title: "백앤드 웹개발자의 책&강의 정리" description: "CSIT 인프라, 아키텍처그림으로 공부하는 IT 인프라구조웹개발처음 해보는 Servlet & JSP 웹 프로그래밍자바 웹을 다루는 기술[스프링 퀵 스타트](http://www.kyobobook.co.kr/product/detailViewKor.laf" host: velog.io favicon: https://static.velog.io/favicons/favicon-32x32.png image: https://velog.velcdn.com/images/mooh2jj/post/95a18142-16eb-466f-a745-145e8eaf63fb/IE002375123_STD.jpg url: https://jiwondev.tistory.com/250 title: "Mapstruct(DTO Mapper 라이브러리)" description: "💭 DTO Mapper가 뭐죠? View(Controller)는 비즈니스 로직, 도메인과 상관없이 언제든지 변경될 수 있다. 도메인 서비스에서 입출력을 바로 받으면 View에 의존성이 생기기 때문에 아래와 같이 DTO로 변환해서 사용한다. // 이제 Controller(Dto 또는 Request)가 변해도, 도메인은 영향받지 않는다. UserEntity toEntity(UserDto userDto) { return new userEntity(userDto.getId(), userDto.getPassword(), userDto.getName()); } RegisterUserCommand toCommand(RegisterUserRequest request){...} UserResponse toResponse.." host: jiwondev.tistory.com favicon: https://t1.daumcdn.net/tistory_admin/favicon/tistory_favicon_32x32.ico image: https://img1.daumcdn.net/thumb/R800x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbxHU8f%2FbtrrcHuJ8Qf%2FGFnbqISOBeIrSaD6NQAN0K%2Fimg.png url: https://minwoo-it-factory.tistory.com/entry/Spring-boot-TDD-%EB%B0%8F-JaCoCo-%ED%85%8C%EC%8A%A4%ED%8A%B8-%EC%BB%A4%EB%B2%84%EB%A6%AC%EC%A7%80 title: "Spring boot TDD 및 JaCoCo 테스트 커버리지" description: "1, Given – When – Then 2, F.I.R.S.T Given – When – Then Given 테스트에 필요한 환경을 설정하는 단계, 필요한 변수, Mock 객체로 특정 상황의 행동 정의 ※ Mock 객체 -테스트 작성을 위해 사용하는 거짓된 객체, 실제 객체가 아님 When 목적을 보여주는 단계, 테스트 코드를 포함하여 테스트하고 결과 값을 가짐 Then 결과를 검증하는 단계, 이 단계에서 결과 값을 검증, 결과 값이 아니어도 테스트를 하여 검증한 것이 있으면 같이 검증 F.I.R.S.T 빠르게(Fast) 테스트는 빠르게 수행돼야 한다. 테스트가 느리면 코드를 개선하는 작업이 느려져 코드 품질이 떨어질 수 있다 테스트 속도에 절대적인 기준은 없지만 목적을 단순하게 설정해서 작성하거나 외.." host: minwoo-it-factory.tistory.com favicon: https://t1.daumcdn.net/tistory_admin/favicon/tistory_favicon_32x32.ico image: https://img1.daumcdn.net/thumb/R800x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcjbzgq%2FbtsijfGq3Xv%2FU7BMAQ9BkU7GJMiXBKycd0%2Fimg.png url: https://helloworld.kurly.com/blog/spring-rest-docs-guide/ title: "내가 만든 API를 널리 알리기 - Spring REST Docs 가이드편" description: "'추석맞이 선물하기 재개발'에 차출되어 API 문서화를 위해 도입한 Spring REST Docs 를 소개합니다." host: helloworld.kurly.com favicon: https://helloworld.kurly.com/assets/logo/ico_192.png image: http://thefarmersfront.github.io/assets/logo-square.png url: https://gmlwjd9405.github.io/ title: "Heee's Development Blog" description: "Step by step goes a long way." host: gmlwjd9405.github.io image: https://gmlwjd9405.github.io/assets/img/whale_in_the_sky.png url: https://blog.banksalad.com/tech/banksalad-code-review-culture/ title: "코드 리뷰 in 뱅크샐러드 개발 문화 | 뱅크샐러드" description: "안녕하세요, 뱅크샐러드 BanksaladX iOS Engineer…" host: blog.banksalad.com favicon: https://blog.banksalad.com/favicon-32x32.png?v=a0f8dfab85709bd32e8bfd56c885f0fe image: https://blog.banksalad.com/static/c93a0a2e208885a33b22aba4db51028f/cover.png url: https://youtu.be/v4dbPi3SUuQ title: "키워드로 알아보는 백엔드 로드맵 - 정우현(제리)/컴공선배 | 2023 NE(O)RDINARY CONFERENCE" description: "2023년 9월 8일-9월 9일에 개최된 2023 NE(O)RDINARY CONFERENCE[키워드로 알아보는 백엔드 로드맵] 을 주제로 발표하신 컴공선배 정우현(제리)님의 세션입니다. #너디너리 #너디너리데모데이 #너디너리컨퍼런스 #컴공선배✔️너디너리 데모데이 행사 홈페이지 ht..." host: youtu.be favicon: https://www.youtube.com/s/desktop/4151fd0f/img/favicon_32x32.png image: https://i.ytimg.com/vi/v4dbPi3SUuQ/maxresdefault.jpg url: https://velog.io/@kurtyoon/%EA%B0%9C%EB%B0%9C-%EC%83%81%EC%8B%9D-%EC%A0%88%EC%B0%A8%EC%A7%80%ED%96%A5%EA%B3%BC-%EA%B0%9D%EC%B2%B4%EC%A7%80%ED%96%A5 title: "[개발 상식] 절차지향과 객체지향" description: "절차지향, 객체지향" host: velog.io favicon: https://static.velog.io/favicons/favicon-32x32.png image: https://images.velog.io/velog.png url: https://velog.io/@bbkyoo/spring-JPA-%EC%A0%95%EB%A6%AC title: "spring JPA 정리" description: "JPA에 대해서 알기전에 기본이 되는 ORM에 대해서 알아야 한다.ORM : 객체는 객체대로 설계하고, RDB(관계형 데이터베이스)는 RDB 대로 설계한다.프레임워크로 객체와 RDB 를 중간에서 서로 매핑해주는 역할을 담당한다.대중적인 언어에는 대부분 ORM 기술이 존" host: velog.io favicon: https://static.velog.io/favicons/favicon-32x32.png image: https://velog.velcdn.com/images/bbkyoo/post/424effb5-4547-4b3a-98df-e99b1709f29b/image.png java record url: https://velog.io/@pp8817/record title: "✏️ [Java] record에 대하여" description: "Java의 record에 대해서 알아봅시다." host: velog.io favicon: https://static.velog.io/favicons/favicon-32x32.png image: https://velog.velcdn.com/images/pp8817/post/59a448a0-f04e-4527-aa72-ee81a1a9245c/image.png url: https://velog.io/@baekgom/SSE-Server-Sent-Event-%EC%95%8C%EB%A6%BC-%EA%B8%B0%EB%8A%A5 title: "SSE (Server-Sent Event) - 실시간 알림 기능" description: "SSE (Server-Sent Event) - 실시간 알림 기능" host: velog.io favicon: https://static.velog.io/favicons/favicon-32x32.png image: https://images.velog.io/velog.png url: https://velog.io/@choidongkuen/%EC%84%9C%EB%B2%84-%EB%A9%94%EC%84%B8%EC%A7%80-%ED%81%90Message-Queue-%EC%9D%84-%EC%95%8C%EC%95%84%EB%B3%B4%EC%9E%90 title: "[서버] 메세지 큐(Message Queue) 을 알아보자" description: "안녕하세요 오늘은 메세지 큐(Message Queue) 에 대해 전반적인 이해와 대표적인 종류을 알아보겠습니다.메세지 큐 를 본격적으로 알아보기 전에 메세지 지향 미들웨어(MOM) 에 대해 알아보겠습니다.메세지 지향 미들웨어란 응용 소프트웨어 간의 비동기적 데이터 통신" host: velog.io favicon: https://static.velog.io/favicons/favicon-32x32.png image: https://velog.velcdn.com/images/choidongkuen/post/b208dfbc-edd7-40ee-90b4-7fbd9f0f7166/image.png url: https://jaemunbro.medium.com/elastic-search-%EA%B8%B0%EC%B4%88-%EC%8A%A4%ED%84%B0%EB%94%94-ff01870094f0 title: "[Elastic Search] 기본 개념과 특징(장단점)" description: "엘라스틱서치의 기본 개념, 특징에 대해 정리" host: jaemunbro.medium.com favicon: https://miro.medium.com/v2/5d8de952517e8160e40ef9841c781cdc14a5db313057fa3c3de41c6f5b494b19 image: https://miro.medium.com/v2/resize:fit:1200/1*4qj-i_4q4L5o03UQBO-_DQ.png url: https://umbum.dev/1206/ title: "(Spring) MVC Layered Architecture - DTO와 Domain Model을 분리해야 하는 이유" description: "그림1" host: umbum.dev favicon: https://umbum.dev/assets/img/favicons/favicon-32x32.png url: https://d2.naver.com/helloworld/0923884 title: "NAVER D2" host: d2.naver.com url: https://mangkyu.tistory.com/53 title: "[Database] MVCC(다중 버전 동시성 제어)란?" description: "오늘은 단일 쿼리로는 해결할 수 없는 로직을 처리할 때 필요한 개념인 트랜잭션에 대해 알아보고, Spring에서 어떻게 활용하는지 확인해보도록 하겠습니다. 1. 동시성 제어(Concurrency Control) [ 동시성 제어(Concurrency Control)이란? ] 동시성 제어란 DBMS가 다수의 사용자 사이에서 동시에 작용하는 다중 트랜잭션의 상호간섭 작용에서 Database를 보호하는 것을 의미한다. 일반적으로 동시성을 허용하면 일관성이 낮아지게 되며 이를 그래프로 나타내면 아래와 같다. 다수 사용자의 동시 접속을 위해 DBMS는 동시성 제어를 할 수 있도록 Lock 기능과 SET TRANSACTION 명령어를 이용해 트랜잭션의 격리성 수준을 조정할 수 있는 기능도 제공한다. 이렇게 동시성을 .." host: mangkyu.tistory.com favicon: https://t1.daumcdn.net/tistory_admin/favicon/tistory_favicon_32x32.ico image: https://img1.daumcdn.net/thumb/R800x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FYYwAw%2FbtqAhqpozl2%2FIMdpfbgguBj897K4VkEwy1%2Fimg.png url: https://mangkyu.tistory.com/289 title: "[Spring] OpenFeign에 Resilence4J 서킷 브레이커 적용하는 방법과 예시 및 주의사항" description: "이번에는 Java 진영의 서킷브레이커 라이브러리인 Resilence4J를 OpenFeign에 적용하는 방법에 대해 알아보도록 하겠습니다. 아래의 내용은 공식 문서와 직접 구현 및 테스트한 부분을 바탕으로 작성되었습니다. 1. Resilence4J 라이브러리와 구성 요소 [ Resilience4J란? ] Resilience4J는 함수형 프로그래밍으로 설계된 경량(lightweight) 장애 허용(fault tolerance) 라이브러리로, 서킷브레이커 패턴을 위해 사용된다. 서킷 브레이커 패턴에 대해서는 앞선 포스팅을 참고하도록 하자. fault-tolerance란 하나 이상의 구성 요소에 문제가 생겨도 시스템이 중단없이 계속 작동할 수 있는 시스템을 의미한다. Resilience4J를 적용하면 외부 서비.." host: mangkyu.tistory.com favicon: https://t1.daumcdn.net/tistory_admin/favicon/tistory_favicon_32x32.ico image: https://img1.daumcdn.net/thumb/R800x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuNo1O%2FbtrZbPeAUL7%2FNdILGDlI2tSkzelj1zZbBK%2Fimg.png url: https://mangkyu.tistory.com/296 title: "[Gradle] Gradle Java 플러그인과 implementation와 api의 차이" description: "이번에는 Gradle(그레이들)이 제공하는 Java 플러그인과 implementation와 api의 차이에 대해 알아보도록 하겠습니다. 1. Gradle Java 플러그인, Java-Library 플러그인 [ Java 플러그인이란? ] Gradle(그레이들)에서 Java 프로젝트를 빌드하려면 기본적으로 java 플러그인이 필요하다. java 플러그인을 통해 컴파일, 테스트, jar 파일 생성 등의 작업들(tasks)이 수행 가능하다. plugins { id 'java' } Java 플러그인이 제공하는 작업들은 아래의 그림에 나와있다. 자세한 내용은 공식 문서를 참고하도록 하자. 자바로 작성된 프로그램은 먼저 Java 파일들을 컴파일하여 바이트 코드(.class)로 만들어내고, 이를 JVM이 읽어들인다. .." host: mangkyu.tistory.com favicon: https://t1.daumcdn.net/tistory_admin/favicon/tistory_favicon_32x32.ico image: https://img1.daumcdn.net/thumb/R800x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FPcGRB%2FbtsdYBT9rsg%2FgPY6GbZlDn84i72Nw0mwE1%2Fimg.png url: https://medium.com/@taesulee93/postgresql-pk-%EC%9E%90%EB%A3%8C%ED%98%95%EC%97%90-%EB%94%B0%EB%A5%B8-spring-data-jpa-hibernate-entity-id-%EB%A7%A4%ED%95%91-%ED%8C%81-ca7b1f6da2ac title: "PostgreSQL PK 자료형에 따른 Spring Data JPA(Hibernate) Entity ID 매핑 팁" description: "Sequence, Serial, Identity 속성에 따른 JPA Entity 매핑 방법" host: medium.com favicon: https://miro.medium.com/v2/5d8de952517e8160e40ef9841c781cdc14a5db313057fa3c3de41c6f5b494b19 image: https://miro.medium.com/v2/resize:fit:935/1*VchrpskTkBrQCRVnm5crcQ.png url: https://techblog.woowahan.com/11392/ title: "Spring Boot에서 S3에 파일을 업로드하는 세 가지 방법 | 우아한형제들 기술블로그" description: "Spring Boot에서 S3에 파일을 업로드하는 세 가지 방법 | 안녕하세요. 세일즈서비스팀에서 전자계약서 시스템을 개발하고 있는 박민규입니다. 최근 저는 Spring Boot + Kotlin을 활용한 프로젝트에서 특별한 도전과제에 직면했습니다. 바로 최대 3GB의 파일을 안정적으로 업로드하는 기능을 구현하는 것이었습니다. 대용량 파일 업로드에는 다양한 고려 사항과 복잡성이 따르기 때문에 많은 고민이 필요했습니다. 그 과정에서 다양한 방법을 탐색하게 되었고, 대부분 아래 세 가지 방법에서 기술적으로 크게 벗어나지 않다는 것을" host: techblog.woowahan.com favicon: https://techblog.woowahan.com/wp-content/uploads/2020/08/favicon.ico image: https://techblog.woowahan.com/wp-content/uploads/2021/06/screenshot.jpg url: https://velog.io/@songyuheon/%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-%EC%84%B1%EB%8A%A5-%EA%B0%9C%EC%84%A0-%EB%8C%80%EC%9A%A9%EB%9F%89-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%B2%98%EB%A6%AC%EB%A5%BC-%EC%9C%84%ED%95%9C-%ED%8E%98%EC%9D%B4%EC%A7%95%EC%97%90%EC%84%9C-%EC%8A%AC%EB%9D%BC%EC%9D%B4%EC%8A%A4%EB%A1%9C%EC%9D%98-%EC%A0%84%ED%99%98 title: "프로젝트 성능 개선 : 대용량 데이터 처리를 위한 페이징에서 슬라이스로의 전환" description: "기존에는 JPA의 페이징 기능을 사용하여 데이터를 조회하고 있었다. 하지만 데이터의 양이 많아지면서 페이지를 계산하기 위한 카운트 쿼리의 실행 시간이 길어지기 시작했고 이로 인해 사용자가 데이터를 조회하는데 거의 4 ~ 5 초 가까이 걸리는 상황이 발생했다.이 문제를" host: velog.io favicon: https://static.velog.io/favicons/favicon-32x32.png image: https://velog.velcdn.com/images/songyuheon/post/f4f9b489-b7c3-4409-b9e3-aa8e571c99ee/image.jpg url: https://velog.io/@songyuheon/%EB%8F%99%EC%8B%9C%EC%84%B1-%EC%98%A4%EB%A5%98-%ED%95%B4%EA%B2%B0 title: "Spring 세마포어를 통한 동시성 문제 해결" description: "동시성 테스트 결과를 보면 하나의 책에 여러개의 신청이 생긴 것을 알 수 있다.\\-> 동시성 문제가 발생한 것을 알 수 있다.즉 다수의 사용자들이 동시에 이벤트에 참여해서 동일한 책을 신청하면 동시성 오류가 발생한다.하나의 책은 한 사람에게만 기부 될 수 있는데 여러사" host: velog.io favicon: https://static.velog.io/favicons/favicon-32x32.png image: https://velog.velcdn.com/images/songyuheon/post/e1808ea8-28c0-4145-a2b0-1c090d55df75/image.jpg url: https://medium.com/@jngbng/postgresql-timestamp-%EC%82%AC%EC%9A%A9-%EC%8B%9C-%EC%A3%BC%EC%9D%98%EC%82%AC%ED%95%AD-ec8863ef67f0 title: "PostgreSQL timestamp 사용 시 주의사항" description: "PostgreSQL에서 시간을 다룰 때 자주 쓰는 timestamp 타입과 관련하여 놓치기 쉬운 주의사항을 집고 넘어가자." host: medium.com favicon: https://miro.medium.com/v2/5d8de952517e8160e40ef9841c781cdc14a5db313057fa3c3de41c6f5b494b19 image: https://miro.medium.com/v2/da:true/resize:fit:1200/0*RRtP4lIuPBmBKuOZ url: https://velog.io/@yso8296/querydsl%EC%9D%84-%EC%9D%B4%EC%9A%A9%ED%95%9C-%ED%8E%98%EC%9D%B4%EC%A7%95%EA%B2%80%EC%83%89-%EA%B8%B0%EB%8A%A5-%EA%B5%AC%ED%98%84 title: "querydsl을 이용한 페이징/검색 기능 구현" description: "데이터베이스를 이용해야 할 때 JPA나 JPQL을 이용하면 SQL을 작성하거나 쿼리를 처리하는 소스 부분이 줄어들기 때문에 무척 편리하지만 어노테이션을 이용해서 지정하기 때문에 고정된 형태라는 단점이 있다.예를 들어 '검색'이라는 기능이 필요한데 '제목/내용/작성자'와" host: velog.io favicon: https://static.velog.io/favicons/favicon-32x32.png image: https://images.velog.io/velog.png url: https://velog.io/@sunkyuj/Spring-%EC%9B%B9%EC%86%8C%EC%BC%93%EC%9C%BC%EB%A1%9C-%EC%8B%A4%EC%8B%9C%EA%B0%84-%EC%B1%84%ED%8C%85-%EA%B5%AC%ED%98%84 title: "[Spring] 웹소켓으로 실시간 채팅 구현" description: "현재 만들고 있는 토이 프로젝트에서 채팅 기능을 구현하고자 하였다.채팅 기능을 구현하기 위해서는 웹소켓에 대해서 알아야 했다.웹소켓이란?처음에 채팅 기능을 구현할 때 HTTP를 이용해서 구현하려고 했다.하지만 HTTP는 요청과 응답이라는 구조로 통신이 이" host: velog.io favicon: https://static.velog.io/favicons/favicon-32x32.png image: https://velog.velcdn.com/images/sunkyuj/post/31487f23-6f0a-4c61-bf72-99085a813452/image.png url: https://velog.io/@gkdud583/%EC%B1%84%ED%8C%85-%EC%95%84%ED%82%A4%ED%85%8D%EC%B2%98-%EC%84%A4%EA%B3%84%ED%95%98%EA%B8%B0 title: "채팅 아키텍처 설계하기 v1" description: "이번에 진행하는 프로젝트에서 채팅, 신고 도메인을 맡았고 캠프장님께 아키텍처 리뷰를 받기전에 간략하게 설계한 아키텍처를 기록한다. 신고" host: velog.io favicon: https://static.velog.io/favicons/favicon-32x32.png image: https://images.velog.io/velog.png url: https://velog.io/@holicme7/%ED%91%9C%EC%A4%80-%EB%A9%94%EC%84%B8%EC%A7%95-%ED%94%84%EB%A1%9C%ED%86%A0%EC%BD%9C-%EC%A0%95%EB%A6%AC-AMQP-STOMP-MQTT title: "표준 메세징 프로토콜 정리 (AMQP, STOMP, MQTT)" description: "AMQP는 메세지 지향 미들웨어 (MOM) 을 위한 표준 응용 계층 프로토콜입니다. 간단히 말하면, 메세지 통신을 위한 규약 스펙 입니다.플랫폼 종속적인 제품들 사이에서 서로 다른 이기종간에 메세지를 교환하기 위해서는 메세지 포맷 변환을 위해 속도가 느린 메세지 Bri" host: velog.io favicon: https://static.velog.io/favicons/favicon-32x32.png image: https://velog.velcdn.com/images/holicme7/post/129dddac-1eab-4f60-91de-6913ba3b0402/image.png url: https://youtu.be/uvG-amw2u2s title: "우리는 이렇게 모듈을 나눴어요: 멀티 모듈을 설계하는 또 다른 관점 | 인프콘2023" description: "🌱인프런에서 인프콘2023 강의 자료 다운로드 받고 복습해보세요.💚강의 자료 다운 받기 : https://u.inf.run/3Ftm5RL🌱미래의 동료들과 함께 성장하는 곳. 인프런💚우리는 이렇게 모듈을 나눴어요: 멀티 모듈을 설계하는 또 다른 관점 - 조민규기존의 단일 모..." host: youtu.be favicon: https://www.youtube.com/s/desktop/f72ecfe9/img/favicon_32x32.png image: https://i.ytimg.com/vi/uvG-amw2u2s/maxresdefault.jpg?sqp=-oaymwEmCIAKENAF8quKqQMa8AEB-AH-CYAC0AWKAgwIABABGCcgZChyMA8=&rs=AOn4CLANmfegp19IPStIlfMbyC6viPeMHg url: https://jaeseo0519.tistory.com/411 title: "[Network] WebSocket & Sub Protocol (feat. STOMP)" description: "📕 목차1. Web Socket2. Sub Protocol3. STOMP(Simple Text Oriented Messaging Protocol)1. Web Socket [대규모 시스템 설계] 12장. 채팅 시스템 설계📕 목차1. 채팅 시스템2. 프로토콜3. 개략적 설계안4. 데이터 모델5. 상세 설계6. 개인적인 추가 고민1. 채팅 시스템 📌 과거와 현재 채팅 시스템 차이💡 책에 나온 내용은 아니고, 예전에 어딘jaeseo0519.tistory.com여기서 이어지는 내용.채팅 시스템 구현하다가, 우선 Web Socket 프로토콜에 대해서 명확하게 짚고 넘어가는 것이 좋다고 생각해서 작성. RFC 6455: The WebSocket ProtocolThe WebSocket Protocol en.." host: jaeseo0519.tistory.com favicon: https://t1.daumcdn.net/tistory_admin/favicon/tistory_favicon_32x32.ico image: https://img1.daumcdn.net/thumb/R800x0/?scode=mtistory2&fname=https%3A%2F%2Ft1.daumcdn.net%2Ftistory_admin%2Fstatic%2Fimages%2FopenGraph%2Fopengraph.png url: https://gngsn.tistory.com/99 title: "HTTP/2, 제대로 이해하기" description: "HTTP? HTTP는 인터넷을 사용해봤다면 누구나 한 번쯤 들어 봤을텐데요. HyperText Transfer Protocol의 약자로, HyperText(링크를 통해 다른 문서로 연결될 수 있는 문서)를 Transfer(전송하는) Protocol(규격이 정해진 규칙 체계)입니다. 다르게 표현하자면, 웹에서 클라이언트(브라우저)가 웹 서버(httpd, nginx, apache 등)정보를 주고받을 수 있는 프로토콜입니다. 주로 글 위주로 이미지가 포함된 예전의 웹 페이지와는 달리, 이미지의 용량은 매우 커졌고 동영상의 수요와 공급이 급격히 증가하면서 기존의 통신 프로토콜을 변경해야할 필요성을 느끼게 됩니다. 변경 내역을 확인해보면서, HTTP3까지 어떤 것이 변경되고 왜 그렇게 변경되었는지 확인해보는 것이.." host: gngsn.tistory.com favicon: https://t1.daumcdn.net/tistory_admin/favicon/tistory_favicon_32x32.ico image: https://img1.daumcdn.net/thumb/R800x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkI2hX%2FbtrkHKJ7naT%2FQUIxclKjuuiVKoUhHGuZM0%2Fimg.png url: https://binux.tistory.com/74 title: "Message Broker - 왜 사용하는 것일까 ?" description: "RabbitMQ, Kafka를 들어보기도 하고, 사내에서 사용하기도 하다보니 찾아보며 공부하는 것이 좋겠다 싶어 이렇게 정리하게 되었습니다. 뭐, 대충 어떠한 역할을 하는지는 알고 있었지만, 제일 중요한 \"왜 필요한지?\"에 대해서는 확실히 대답하지 못하는 것 같아 찾아보며 공부해보고자 합니다. RabbitMQ, Kafka 등 이러한 메세징 SW들을 찾다보니 이들을 이루는 구조, 이론 등이 있었고, 이를 먼저 정리해보고자 합니다. 3가지 단어가 자주 등장을 하는데요, 이걸 먼저 조금씩 알고 넘어갑시다. MOM (Message Oriented Middleware): 메시지 미들웨어의 이론, 개념, 설계도를 의미 Message Queue: 메시지 큐에 대해선 어떻게 보냐에 따라 의견이 나뉘는 것 같습니다. 단.." host: binux.tistory.com image: https://img1.daumcdn.net/thumb/R800x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcjnBlj%2Fbtrax79a8Bn%2F7Y6xDJoEIpkXDvgVMEmwo1%2Fimg.jpg url: https://infinitecode.tistory.com/59?category=1210426 title: "[채팅 서버] STOMP, Message Broker" description: "이번에 진행하는 프로젝트에서 채팅 서버 관련 개발을 담당하게 되어 학습한 내용을 정리한 포스팅입니다. 채팅 서버 관련 레퍼런스를 참조하며 클론코딩을 진행해보는 과정에서 아래와 같은 문제점을 발견했습니다. 단순 WebSocket만을 통해 채팅 서버를 구현하게 될 경우 해당 메시지가 어떤 요청인지 어떻게 처리해야 하는지에 따라 채팅룸과 세션을 일일이 구현해야함 메시지 발송을 관리하는 추가 코드 필요 이런 단점들을 STOMP 프로토콜을 활용하여 메시징을 효율적으로 처리하여 서버를 고도화할 필요가 있다고 생각했고 다음은 학습한 내용을 정리한 부분입니다. STOMP STOMP란? - Simple Text Oriented Messaging Protocol - 메시지 전송을 효율적으로 하기 위한 프로토콜 - 기본적으.." host: infinitecode.tistory.com favicon: https://t1.daumcdn.net/tistory_admin/favicon/tistory_favicon_32x32.ico image: https://img1.daumcdn.net/thumb/R800x0/?scode=mtistory2&fname=https%3A%2F%2Ft1.daumcdn.net%2Ftistory_admin%2Fstatic%2Fimages%2FopenGraph%2Fopengraph.png url: https://yozm.wishket.com/magazine/detail/1772/ title: "Etag를 이용하여 더 나은 Restful API 만들기 | 요즘IT" description: "요즘 웹 개발자라면 Restful API를 한 번쯤 다뤄본 경험이 있을 것입니다. HTTP 사양의 주요 저자 이자 REST를 세상에 처음 알린 ‘로이 필딩(Roy Fielding)이 주장하는 REST 아키텍처 구성요소는 잘 몰라도 HTTP를 이용해 원하는 데이터를 URI로 호출하여 JSON 등의 문서 포맷으로 데이터를 주고받는다는 내용은 알고 있을 정도니까요." host: yozm.wishket.com favicon: https://yozm.wishket.com/static/renewal/img/news/favicon-32.png image: https://yozm.wishket.com/media/news/1772/image003.png url: https://github.com/yoondo/http-api-design/tree/master/ko title: "http-api-design/ko at master · yoondo/http-api-design" description: "HTTP API design guide extracted from work on the Heroku Platform API - yoondo/http-api-design" host: github.com favicon: https://github.githubassets.com/favicons/favicon.svg image: https://opengraph.githubassets.com/9b8f9be11e27f77023d1f897aa546e3cb0a7b6028991eddd88afa5934edbb818/yoondo/http-api-design url: https://velog.io/@asws1457/%EC%9B%B9-%EC%B5%9C%EC%A0%81%ED%99%94 title: "[Spring Boot] 웹 최적화" description: "들어가며웹 개발을 하면서 웹 성능 최적화는 말을 한 번쯤 들어 봤을 것이라고 생각한다.웹 개발자에게 웹 성능 최적화는 쉽게 접할 수 있는 이슈이며 피할 수 없는 숙제라고 생각한다.이번 작업은 웹 성능 최적화 방법중 클라이언트 응답시간을 줄이는 방법으로 브라우저가" host: velog.io favicon: https://static.velog.io/favicons/favicon-32x32.png image: https://velog.velcdn.com/images/asws1457/post/926eb739-d304-4fdc-8397-c1b5cbd365c3/image.jpeg url: https://engineerinsight.tistory.com/354#%E2%9C%94%EF%B8%8F%C2%A0Try%3A%20%ED%95%9C%20%ED%8A%B8%EB%9E%9C%EC%9E%AD%EC%85%98%EC%9D%98%20%EA%B2%A9%EB%A6%AC%20%EC%88%98%EC%A4%80%EB%A7%8C%EC%9D%84%20REPEATABLE_READ%EB%A1%9C%20%EC%98%AC%EB%A6%B0%EB%8B%A4.%20%E2%87%92%20%EC%8B%A4%ED%8C%A8-1 title: "[DB] MVCC(Multi Version Concurrency Control): 개념, 격리 수준 별 동작 방식 in MySQL & PostgreSQL" description: "Computer Science 모아보기 👉🏻 https://github.com/seoul-developer/CS GitHub - seoul-developer/CS: 주니어 개발자를 위한 전공 지식 모음.zip 주니어 개발자를 위한 전공 지식 모음.zip. Contribute to seoul-developer/CS development by creating an account on GitHub. github.com 💋 MVCC란? ✔️ 등장 배경 락을 사용한 동시성 제어의 경우에, read-read 락끼리는 2개 이상의 트랜잭션일 경우에도 동시에 처리가 가능하다. 하지만, write 락을 얻은 트랜잭션이 1개라도 존재한다면 다른 트랜잭션들은 모두 read 락 조차 획득할 수 없게 된다. 이 경우 처리량이 .." host: engineerinsight.tistory.com favicon: https://t1.daumcdn.net/tistory_admin/favicon/tistory_favicon_32x32.ico image: https://img1.daumcdn.net/thumb/R800x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb2tHcq%2FbtsDkzdfMFG%2FSrhqQDuoDA2kM0gL1WkrC0%2Fimg.jpg url: https://velog.io/@mingsound21/Querydsl-16.-%ED%94%84%EB%A1%9C%EC%A0%9D%EC%85%98%EA%B3%BC-%EA%B2%B0%EA%B3%BC-%EB%B0%98%ED%99%98 title: "[Querydsl] 16. 프로젝션과 결과 반환" description: "프로젝션에 대해서 알아보고, 결과 반환을 Tuple, DTO로 받아보자. 그리고 DTO로 받는 방식 3가지와 @QueryProjection을 사용하는 방식까지 알아보자!" host: velog.io favicon: https://static.velog.io/favicons/favicon-32x32.png image: https://velog.velcdn.com/images/mingsound21/post/69ebf656-49a3-4eed-90fe-3590c60d94aa/image.png url: https://techblog.woowahan.com/9478/ title: "PostgreSQL Vacuum에 대한 거의 모든 것 | 우아한형제들 기술블로그" description: "PostgreSQL을 사용하신다면 반드시 알아야 하는 개념! Vacuum에 대해 같이 알아봅시다" host: techblog.woowahan.com favicon: https://techblog.woowahan.com/wp-content/uploads/2020/08/favicon.ico image: https://techblog.woowahan.com/wp-content/uploads/2022/12/PostgreSQL-Vacuum에-대한-거의-모든-것.jpg url: https://2tsumo-hitori.tistory.com/m/55 title: "PostgreSQL, MySQL 에서의 Lost update 대처 방안" description: "Lost Update란?동시성 제어 문제 중 하나로, 두 개 이상의 트랜잭션이 동일한 데이터를 동시에 읽고 업데이트할 때 발생합니다.이 문제는 한 트랜잭션이 다른 트랜잭션이 한 업데이트를 덮어써서 그 업데이트가 '사라지는' 상황을 초래합니다. 이는 데이터 일관성에 심각한 영향을 미칠 수 있습니다. 관련 포스팅 - 트랜잭션 격리 수준 'read committed' 에서의 lost update 해결 (tistory.com) 앞선 포스팅에서의 Lost Update 대처 방안은 개발자가 직접 FOR UPDATE 등의 구문 없이 제어할 수 있으나, 특수한 경우에서만 사용 가능하고 역설적으로 개발자가 직접 트랜잭션 락을 관리하지 않기 때문에 예상치 못한 문제가 발생할 수 있습니다. 그래서 주로 격리 수준 Repea.." host: 2tsumo-hitori.tistory.com image: https://img1.daumcdn.net/thumb/R800x0/?scode=mtistory2&fname=https%3A%2F%2Ft1.daumcdn.net%2Ftistory_admin%2Fstatic%2Fimages%2FopenGraph%2Fopengraph.png url: https://dawonny.tistory.com/460#google_vignette title: "Github README 기술 스택 쉽고 예쁘게 꾸미기" description: "오랜만에 깃허브 리드미 꾸미기를 하다가 기술스택 부분을 작성해보고져서 서치를 하던 중 괜찮은 것을 발견해서 공유합니다! 결과물은 위와 같아요. 8가지 정도 추가해봤는데, 예쁜 것 같아요. 위 이미지처럼 기술 스택을 뱃지형태로 만드는 방법이 제일 많이 쓰는 방법인 것 같은데요. 저는 이것 말고, 좀 더 둥글둥글하고 로고가 더 돋보이는 디자인을 원했어요! 마침 편리하게 추가할 수 있는 기능을 제공하는, 레포지터리를 찾을 수 있었는데요. 바로 skill-icons 입니다. 사용법 사용법은 간단합니다. [![My Skills](https://skillicons.dev/icons?i=js,html,css,wasm)](https://skillicons.dev) 위 코드를 Github README 에 복붙하기만 하면.." host: dawonny.tistory.com image: https://img1.daumcdn.net/thumb/R800x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbeklYh%2FbtsGsjZazVs%2FGcDdjA3SLj5CAK9LGDGt5K%2Fimg.png CQRS , Materialized View url: https://2hyes.tistory.com/200 title: "[Database] Materialized View" description: "0. Materialized View Materialized View는 데이터베이스에서 쿼리의 결과를 미리 계산하여 저장하는 실제 테이블로, 데이터량이 많거나 복잡한 쿼리를 실행할 때 발생하는 성능 문제를 완화하기 위해 사용된다. 많은 양의 데이터를 처리해야 하는 경우, 복잡한 쿼리의 실행은 데이터베이스 서버에 부하를 줄 수 있고, 응답 시간이 길어질 수 있다. 특히, 필자의 경우에는 프로덕트에서 해당 API에 직접 요청을 주는데, 추후 트래픽이 증가하면 데이터베이스의 성능이 저하되어 서비스 중단이 발생할 위험이 있다고 판단했다. materialized view 테이블에 대해서 몰랐던 나는, ETL 잡을 돌리면서 쿼리 결과를 DB테이블 생성해서 저장해두는 방법을 생각했었다. 그러나 매일 바뀌는 연산 결과.." host: 2hyes.tistory.com favicon: https://t1.daumcdn.net/tistory_admin/favicon/tistory_favicon_32x32.ico image: https://img1.daumcdn.net/thumb/R800x0/?scode=mtistory2&fname=https%3A%2F%2Ft1.daumcdn.net%2Ftistory_admin%2Fstatic%2Fimages%2FopenGraph%2Fopengraph.png url: https://mslim8803.tistory.com/73 title: "CQRS란 무엇인가?" description: "이 글은 https://learn.microsoft.com/en-us/azure/architecture/patterns/cqrs 을 기반으로 작성되었으나 필자의 생각과 별도의 코드가 추가되었다. CQRS란 Command and Query Responsibility Segregation 의 약자로, 데이터 저장소로부터의 읽기와 업데이트 작업을 분리하는 패턴을 말한다. CQRS를 사용하면, 어플리케이션의 퍼포먼스, 확장성, 보안성을 극대화할 수 있다. 또한 CQRS 패턴을 통해 만들어진 시스템의 유연성을 바탕으로, 시간이 지나면서 지속적으로 시스템을 발전시켜나갈 수 있으며, 여러 요청으로부터 들어온 복수의 업데이트 명령들에 대한 충돌도 방지할 수 있다. 발생하던 문제점들전통적인 아키텍처에서는, 데이터베이스에.." host: mslim8803.tistory.com favicon: https://t1.daumcdn.net/tistory_admin/favicon/tistory_favicon_32x32.ico image: https://img1.daumcdn.net/thumb/R800x0/?scode=mtistory2&fname=https%3A%2F%2Ft1.daumcdn.net%2Ftistory_admin%2Fstatic%2Fimages%2FopenGraph%2Fopengraph.png url: https://bluayer.com/37 title: "CQRS 패턴, 코드에 순식간에 적용해보기" description: "서론 평화롭게 프로젝트를 개발하고 있던 어느 날, 우연한 기회로 CQRS 패턴에 대해 이야기를 들을 일이 생겼다. 기존 구조는 R.C.Martin의 Clean Architecture를 따라서 작업을 해둔 상태였는데, 어떤 프로그래머 분이 우리 구조에 대해서 들으시더니 오, 그 구조면 CQRS도 고려해보는 건 어때요? 라는 말을 해주셨다. 그리고 나는 CQRS를 진행하던 사이드 프로젝트에 적용하기 위해 알아보는 여정을 가졌다. (그리고 이 사이드 프로젝트는 곧 출시될 예정이다! https://www.official.cookieparking.com에서 메일을 받아보실 수 있습니다) 그래서 우리 API 서버의 이전 구조는... 이전 구조는 클린 아키텍쳐를 '나름' 꼼꼼하게 따르려고 노력했었다. 그러니깐 정확하.." host: bluayer.com image: https://img1.daumcdn.net/thumb/R800x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbsrRon%2FbtqXobQJvjr%2Fcp0MgQyN3Nyu4msN25S4W0%2Fimg.png url: https://hello-judy-world.tistory.com/204 title: "멀티 모듈, 그게 뭔데? 그거 어떻게 하는건데? 🧐" description: "때는.. 바야흐로 일주일 전... 디프만 OT.. 👥 우리 서버팀 : 웅성👥 웅성 👥 웅ㅅ멀티 웅성성 모듈 웅성👥 🐰 주디박 : 뭔데?!! 멀티??? 모??? 뭐라고요?? 멀티 모듈??? 그게 모지!!? DDD???? 👥 우리 서버팀 : 한 프로젝트에 여러 모듈 개발하는 방법이 있어요!! 🐰 주디박 : 예??? 아~~~~ 그렇구나~~~ (모르겠음) 우리 서버팀에서 도전하고 싶어 하고 궁금해하는 멀티 모듈!!! 그게 뭘까? 팀에 도입하고 싶은데 우선 나는 궁금해졌다. 그게 뭔데? 그게 왜 필요한데??? 그래서 공부를 시작했다. 두둥 탁 1. 멀티 모듈 프로젝트✔️ 모듈Oracle Java 문서에서 모듈이란 패키지의 한 단계 위의 집합체이며, 관련된 패키지와 리소스들의 재사용할 수 있는 그룹이라고 정의하고 .." host: hello-judy-world.tistory.com image: https://img1.daumcdn.net/thumb/R800x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbJ9RFs%2FbtsaETwiP2e%2FwrCq4qaknHgoSCBRTBmzek%2Fimg.png url: https://ksh-coding.tistory.com/135 title: "[MSA] 개인 프로젝트 Monolithic to MSA 전환기 - (1) MSA란?" description: "저는 현재 진행중인 간단한 게시판 도메인 개인 프로젝트가 있습니다. 현재의 프로젝트 아키텍쳐는 Monolithic 아키텍쳐입니다. Monolithic 아키텍쳐에서 MSA로의 전환을 경험해보고 싶어서 개인 프로젝트에 적용하고자 합니다! 개인 프로젝트인만큼 엄~청나게 규모가 작지만 작은 상태에서 전환해보고 그 이후 MSA에서 확장도 시간이 되면 경험해보려고 합니다! 실전에 들어가기 전에, 간략하게 Monolithic 아키텍쳐와 MSA 아키텍쳐가 무엇인지 이론적으로 먼저 알아보겠습니다. 개인 프로젝트에 적용하는 만큼 제 개인 프로젝트에 빗대어서 설명을 해보겠습니다! 개인 프로젝트 ERD는 다음과 같습니다. 정말 단순한 게시판 서비스로, Member 서비스와 Board 서비스 2가지 도메인의 서비스만 존재합니다.." host: ksh-coding.tistory.com favicon: https://t1.daumcdn.net/tistory_admin/favicon/tistory_favicon_32x32.ico image: https://img1.daumcdn.net/thumb/R800x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fld9Ru%2FbtsEdZJuV66%2FDeBlvFduL1XMosksH8REwK%2Fimg.png url: https://techblog.woowahan.com/2637/ title: "멀티모듈 설계 이야기 with Spring, Gradle | 우아한형제들 기술블로그" description: "멀티 모듈 설계 이야기 안녕하세요. 배달의민족 프론트 서버를 개발하고 있는 권용근입니다. 멀티 모듈의 개념을 처음알게 되었을 때부터 현재까지 겪었던 문제점들과 그것을 어떻게 해결해나갔는지를 이야기해보려고 합니다. 아래 내용은 모두 Gradle 과 Spring Framework 를 사용한 경험들로 작성되었습니다. 멀티 모듈 프로젝트란? 멀티 모듈 프로젝트를 처음 알게된 건 2017년 초였습니다. 당시에 저는 단일 프로젝트를 사용하고 있었습니다. 예를 들어" host: techblog.woowahan.com favicon: https://techblog.woowahan.com/wp-content/uploads/2020/08/favicon.ico image: https://techblog.woowahan.com/wp-content/uploads/2021/06/screenshot.jpg url: https://dev-jwblog.tistory.com/126 title: "[Java] MDC 를 사용한 로그(Log)추적하기" description: "회사에서 소스를 분석하면서 로그를 기록하는 것에 MDC 라는 것을 사용하고 있었다. (새로운 회사에서 소스 분석하면서 모든게 새롭다... 기존에 내가 사용하던 것들은 어디에...) 간단하게 구글링해보니, 멀티쓰레드 환경에서 스레드 별로 ID를 할당시켜 로깅 추적할 때 원활하게 제공해주는 것이라고 한다고 하는데 이를 정리해보고자 한다. 1. MDC(Mapped Diagnostic Context)란? - Map 형식을 이용하여 클라이언트 특징적인 데이터를 저장하기 위한 메커니즘. - slf4j,logback,log4j2 등 Logger(로거)에서 MDC를 제공한다. - MDC 는 key/value 저장소를 지원하며, 이 저장소는 ThreadContext 에 의존한다. - MDC 클래스는 Map 안에 저장된 .." host: dev-jwblog.tistory.com favicon: https://t1.daumcdn.net/tistory_admin/favicon/tistory_favicon_32x32.ico image: https://img1.daumcdn.net/thumb/R800x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHGZ2Y%2FbtrIseoCw2M%2FnlHC2mKrkiM5cQmiolwGj0%2Fimg.png url: https://sukvvon.tistory.com/54 title: "[MacOS] Terminal을 예쁘게 사용하자 asciiquarium" description: "asciiquarium 설치하기 brew install asciiquarium brew install asciiquarium을 통해 asciiquarium을 설치합니다. asciiquarium 실행하기 asciiquarium Terminal에 asciiquarium을 입력합니다. 다음과 같이 이쁘게 실행되는 것을 볼 수 있습니다. asciiquarium 명령어 모음 README.md 파일을 참고하자면 asciiquarium 명령어는 딱 세 가지가 있습니다. q = quit -> 나가기 r = redraw (will recreate all entities) -> 새로고침 p = toggle pause -> 멈춤 참고해서 활용하면 작업하는 환경에서 심심하지 않고 좋을 것 같습니다." host: sukvvon.tistory.com image: https://img1.daumcdn.net/thumb/R800x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbhJdRb%2Fbtq4Y5XIkRf%2FmCytXX1EXutd3Cbvj40it1%2Fimg.png url: https://tech.kakao.com/posts/392 title: "실시간 댓글 개발기(part.3) - Spring의 동시성 접근 제어에 발목 잡힌 이야기 - tech.kakao.com" description: "전편(실시간 댓글 개발기(part.2) – 험난했지만 유익했던 웹소켓 스트레스 테..." host: tech.kakao.com favicon: https://www.kakaocorp.com/page/favicon.ico image: https://img1.kakaocdn.net/thumb/U896x0/?fname=https%3A%2F%2Ft1.kakaocdn.net%2Fkakao_tech%2Fimage%2F2020%2F06%2Fimages%2F2020_%ED%85%8C%ED%81%AC%EB%B8%94%EB%A1%9C%EA%B7%B8-%EC%9D%B4%EB%AF%B8%EC%A7%80_%EC%8B%A4%EC%8B%9C%EA%B0%84%EB%8C%93%EA%B8%80%EA%B0%9C%EB%B0%9C%EA%B8%B0.png url: https://velog.io/@koseungbin/WebSocket title: "WebSocket" description: "이 글은 Spring WebSocket(https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/web.htmlWebSocket 프로토콜은 표준된 방법으로 서버-클라이언트 간" host: velog.io favicon: https://static.velog.io/favicons/favicon-32x32.png image: https://velog.velcdn.com/images/koseungbin/post/dcac2fa3-8993-4326-a930-d1e73bfecaa1/111.png url: https://velog.io/@jongil512/Spring-%EB%8F%99%EA%B8%B0%EC%99%80-%EB%B9%84%EB%8F%99%EA%B8%B0-%EC%B2%98%EB%A6%AC title: "Spring 동기와 비동기 처리 (Blcoking / Non-Blocking)" description: "동기는 데이터 요청의 결과를 기다리는 것을 말합니다. 즉 요청과 결과가 한 자리에서 동시에 일어납니다.카페에 방문해 커피를 주문할 때, 직원이 한 명 뿐이라면직원에게 커피를 주문주문을 받은 직원은 즉시 커피를 제조제조된 커피 수령이러한 프로세스가 진행되고 이처럼 요청과" host: velog.io favicon: https://static.velog.io/favicons/favicon-32x32.png image: https://velog.velcdn.com/images/jongil512/post/0a1fa095-b6ad-46fe-a02d-2c3ac30eb50b/image.png url: https://xeounxzxu.medium.com/spring-4%EA%B3%84%EC%B8%B5%EB%A0%88%EC%9D%B4%EC%96%B4-%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4-%EC%95%84%ED%82%A4%ED%85%8D%EC%B2%98-8dc40298ba90 title: "Spring | 4계층레이어 소프트웨어 아키텍처" description: "이번에 포스팅 할 부분의 경우 소프트웨어 아키텍처에 대해서 설명을 해보려고 한다." host: xeounxzxu.medium.com favicon: https://miro.medium.com/v2/5d8de952517e8160e40ef9841c781cdc14a5db313057fa3c3de41c6f5b494b19 image: https://miro.medium.com/v2/resize:fit:1200/1*BKR6YaZT2jNYUjOhTiuAUw.png url: https://sanghye.tistory.com/43 title: "[GIT] Git pull 전략 (default, --ff -only, --rebase)" description: "git pull 을 별도 옵션 없이 하게되면 다음과 같은 warning 이 발생하는 것을 볼 수 있습니다. warning: Pulling without specifying how to reconcile divergent branches is discouraged. You can squelch this message by running one of the following commands sometime before your next pull: git config pull.rebase false # merge (the default strategy) git config pull.rebase true # rebase git config pull.ff only # fast-forward only You can.." host: sanghye.tistory.com favicon: https://t1.daumcdn.net/tistory_admin/favicon/tistory_favicon_32x32.ico image: https://img1.daumcdn.net/thumb/R800x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb4TEPJ%2FbtqOdM0htga%2FruMGH3Ripz0UIWtsQ89bvk%2Fimg.png url: https://priming.tistory.com/132?category=1165064 title: "[Java] Spring Boot 3 @Valid ExceptionHandler 예외 처리 방법" description: "@Valid를 사용하여 요청값을 검증할 때 검증을 통과하지 못하면 응답값이 너무 많이 나오는 문제가 있습니다.요청 값 유효성 검사를 통과하지 못했을 때 예외 처리하는 방법을 설명드리겠습니다. MethodArgumentNotValidException우선 예외처리를 위해서는 요청값 검증에 실패했을 때 발생하는 예외가 뭔지 알아야 합니다.요청값 유효성 검사를 통과하지 못하면 다음과 같은 로그를 확인할 수 있습니다.다음은 @NotBlank 검사를 통과하지 못했을 때 출력되는 로그입니다.2024-05-26T11:49:31.985+09:00 WARN 20448 --- [nio-8080-exec-1] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springfr.." host: priming.tistory.com image: https://img1.daumcdn.net/thumb/R800x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FczhV9J%2FbtsHBOqN6cV%2FIyGCmEGYk6RzDsAIEuWSh0%2Fimg.png url: https://onlydev.tistory.com/181 title: "Create / Update 시 응답에 변경된 리소스를 포함해야 할까?" description: "최근 회사에서 리액트를 사용해 어드민 서비스를 개발하면서, POST 요청의 처리 방식에 대해 생각하게 되었다. '왜 POST 요청 후에 변경된 데이터가 응답으로 오지 않을까?' 라는 의문이 든 것이다. 현재의 방식에서, 서버는 HTTP 상태 코드와 간단한 결과 메시지만을 응답한다. 예를 들어, \"처리되었습니다.\"와 같은 메시지다. 그런데 만약 API 응답에 변경된 리소스가 포함되어 온다면 그 데이터를 즉시 사용할 수 있어서, 클라이언트는 추가적인 GET 요청을 보낼 필요가 없어진다. 또한, 별도의 데이터 리패치(refetch) 함수를 만들 필요도 없다. 그래서 좀 더 효율적이고, 깔끔하게 구현할 수 있을거라 생각했다. 다른 개발자들의 생각은 어떨까? 그래서 궁금했다. 다른 개발자들은 어떻게 구현하고 있을.." host: onlydev.tistory.com image: https://img1.daumcdn.net/thumb/R800x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxM1a5%2FbtsB5WARVNR%2F4xt7d6bEPKxtTq3K9ktJ21%2Fimg.jpg url: https://yozm.wishket.com/magazine/detail/2833/ title: "트랜잭셔널 메시징에도, 그냥 PostgreSQL 쓰세요 | 요즘IT" description: "트랜잭셔널 메시징이란 “메시지를 데이터베이스 트랜잭션의 일부로 발행하는 것”을 의미한다. 애플리케이션 비즈니스 로직에 의해 데이터베이스를 수정하는 작업과 메시지 큐에 메시지를 발행하는 작업, 두 가지 작업을 원자적으로 수행하여 데이터 일관성을 보장하는 것이다. 이 글에서는 트랜잭셔널 메시징을 구현하는 두 가지 패턴을 소개한다. 이어 포스트그레스큐엘(PostgreSQL)을 이용하여 이를 더 단순하게 만드는 방법을 다룬다. 포스트그레스큐엘과 PGMQ를 함께 사용하면 데이터베이스 단일 트랜잭션으로 두 가지 작업을 묶을 수 있다." host: yozm.wishket.com favicon: https://yozm.wishket.com/static/renewal/img/news/favicon-32.png image: https://yozm.wishket.com/media/news/2833/image3.png url: https://youtu.be/NnS_5GBu7Wk title: "Spring Boot와 Event 기반 Materialized view를 이용한 Legacy DB 숨통 틔우기" description: "작년 9~11월 엔카닷컴 전체 트래픽의 절반 이상을 차지하는 ‘차량 상세 페이지’의 저장소를 RDB에서 Event 기반 Materialized view로 전환하는 프로젝트를 진행 하였습니다.그 결과 Legacy DB의 숨통이 확 트임은 물론 안정성, 성능, 확장성 측면에서도 매우 ..." host: youtu.be favicon: https://www.youtube.com/s/desktop/6849c09d/img/logos/favicon_32x32.png image: https://i.ytimg.com/vi/NnS_5GBu7Wk/maxresdefault.jpg?sqp=-oaymwEmCIAKENAF8quKqQMa8AEB-AHUBoAC4AOKAgwIABABGC8gWChyMA8=&rs=AOn4CLCePmo60PNwABDVJC72FAHTvCTW3Q url: https://velog.io/@hgs-study/saga-1 title: "Saga패턴을 이용한 분산 트랜잭션 제어(결제 프로세스 실습)" description: "이번 포스팅은 MSA에서 분산 트랜잭션을 제어하는 방법 중 하나인 Saga Pattern을 활용해서 분산 서버에서 간단한 결제 프로세스를 구현해봅니다." host: velog.io favicon: https://static.velog.io/favicons/favicon-32x32.png image: https://velog.velcdn.com/images/hgs-study/post/72d0ef72-2a95-495f-b247-1d5377df95e8/image.png retrieve sorting 관련 안됨 AuctionStatus 가 null로 넘어감 url: https://beststar-1.tistory.com/6 title: "스레드(Thread) - 개념, 사용이유, 프로세스와의 비교, 상태, 우선순위, 종류" description: "프로세스 운영체제에 의해 메모리 공간을 할당받아 CPU에서 실행/제어되고 있는 프로그램이다. 종종 '스케줄링의 대상이 되는 작업'이라는 용어와 거의 같이 쓰인다. 데이터(data) + 자원(memory) + 스레드(Thread)로 구성돼 실제로 프로그램이 실행되기까지는 스레드가 데이터+자원을 활용하여 작업을 수행한다. 💡 프로그램이란 파일 시스템에 존재하는 실행파일이다. 스레드 하나의 프로세스 내에서 여러 개의 실행 흐름(단일, 동시적, 병렬적)을 두어 작업을 효율적으로 처리하기 위한 모델이다. 프로그램 실행하면 JVM이 시작되고 JVM이 시작되면 자바 프로세스가 시작된다. 이때 프로세스 안에 스레드가 있다. 여러 프로세스가 공유하는 하나의 스레드가 수행되는 일은 없다. 어떤 프로세스든 하나 이상의 스레.." host: beststar-1.tistory.com favicon: https://t1.daumcdn.net/tistory_admin/favicon/tistory_favicon_32x32.ico image: https://img1.daumcdn.net/thumb/R800x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbO9SXa%2FbtqUEzmG6sn%2Fse1ISRdyR6tKAY1DdRUNK1%2Fimg.png url: https://www.codestates.com/blog/content/%EC%8A%A4%ED%94%84%EB%A7%81-%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8 title: "스프링과 스프링부트(Spring Boot)ㅣ정의, 특징, 사용 이유, 생성 방법" description: "스프링은 Java 백엔드 개발에 있어 떼어놓을 수 없는 프레임워크입니다. Java 백엔드의 핵심 기술이 되는 스프링 프레임워크와 스프링 부트가 무엇인지, 나아가 스프링 부트를 활용하여 프로젝트를 생성하는 기초적인 방법에 대해 알아봅시다." host: www.codestates.com image: https://blogcodestates.com/wp-content/uploads/2022/11/%EC%8A%A4%ED%94%84%EB%A7%81-%EC%8A%A4%ED%94%84%EB%A7%81-%EB%B6%80%ED%8A%B8-%ED%94%84%EB%A0%88%EC%9E%84%EC%9B%8C%ED%81%AC.png?fit=900%2C675&ssl=1 url: https://goddaehee.tistory.com/154 title: "[Spring] Filter, Interceptor, AOP 차이 및 정리" description: "[Spring] Filter, Interceptor, AOP 차이 및 정리 안녕하세요. 갓대희 입니다. 이번 포스팅은 [ [Spring] 필터, 인터셉터, AOP 정리 ] 입니다. : ) 공통 프로세스에 대한 고민자바 웹 개발을 하다보면, 공통적으로 처리해야 할 업무들이 많다. 예를들어 로그인 관련(세션체크)처리, 권한체크, XSS(Cross site script)방어, pc와 모바일웹의 분기처리, 로그, 페이지 인코딩 변환 등이 있다. 공통업무에 관련된 코드를 모든 페이지 마다 작성 해야한다면 중복된 코드가 많아지게 되고 프로젝트 단위가 커질수록 서버에 부하를 줄 수도있으며, 소스 관리도 되지 않는다. 즉, 공통 부분은 빼서 따로 관리하는게 좋다. 이러한 공통업무를 프로그램 흐름의 앞, 중간, 뒤에 추.." host: goddaehee.tistory.com image: https://img1.daumcdn.net/thumb/R800x0/?scode=mtistory2&fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F9983FB455BB4E5D30C url: https://goddaehee.tistory.com/156 title: "[Spring] 스프링(Spring) 정의 및 특징 정리" description: "[Spring] 스프링(Spring) 정의 및 특징 정리 안녕하세요. 갓대희 입니다. 이번 포스팅은 [ 스프링(Spring) 정의, 스프링 특징 ] 입니다. : ) 스프링프레임워크(Spring Framework) - 자바 플랫폼을 위한 오픈소스 애플리케이션 프레임워크로서 스프링(Spring)이라고도 불린다. - 동적인 웹 사이트를 개발하기 위한 여러 가지 서비스를 제공한다. ▶ 참고1) 어플리케이션??? 애플리케이션?? 앱?? 어플??, 등 용어가 헷갈리시는 분들이 많을 텐데 개발자라면 기본상식으로 알고있어도 좋을 것 같다. 애플리케이션(O) 어플리케이션(X) 앱(O) 어플(X) ▶ 참고2) - 로드 존슨(Rod Johnson)이 자신의 JAVA 개발 경험과 노하우를 기반으로 출판한 책(Expert On.." host: goddaehee.tistory.com image: https://img1.daumcdn.net/thumb/R800x0/?scode=mtistory2&fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F993E1B4A5BB87CDC20 url: https://blog.jiniworld.me/156 title: "[Spring Data JPA Tutorial] 14. Swagger v3 상세설정 및 request 유효성 검증" description: "필요성 OpenAPI doc 관련 Annotation operation 그룹 설정: @Tag Schema 설정 : @Schema 상세 정보 설정 : @Operation response 설정 : @ApiResponse parameter 설정 : @Parameter 기존 api에 적용하기 @Tag 설정 @Schema 및 유효성 검증 설정 @Operation 설정 @ApiResponse 설정 @Parameter 설정 Exception 처리 보완 1. 필요성 Swagger를 이용하여 API를 자동 웹문서화 하였고, Response로 받게될 Example Value 형태까지 맞췄봤습니다. 그러나, 아직 Swagger 페이지 만으로 api 기능을 한눈에 알아보기 어렵습니다. 각 operation들에 대한 부연설명도.." host: blog.jiniworld.me image: https://img1.daumcdn.net/thumb/R800x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbvX8bZ%2FbtrzYD3M8jl%2FUoBBapsQLeKeIfYV8kZqkk%2Fimg.png url: https://cl8d.tistory.com/63 title: "[HTTP] GET vs POST, GET은 body 값을 가지면 안 될까?" description: "🌱 들어가기 전 스터디를 진행하면서, GET 요청과 POST 요청의 차이가 단순히 '의미론적'으로만 차이가 있는 건지 궁금해서 찾아보게 되었다. 습관적으로 나는 리소스 등록 시 POST를, 그리고 조회 시 GET을 사용했었다. 하지만 리소스 등록 시에도 GET을 사용하는 것이 문법적으로도 안 되는 건지, 아니면 관습적으로 사용하지 않는 것인지는 궁금해서 찾아보았다. 그리고 몇 가지 요청들을 실습해가며 어느 정도 생각을 정리해두었다. (영어 원문에 대한 번역을 하다 보니 다소 의미적 차이가 있을 수도 있습니다 🥲) ✔️ GET The GET method requests that the target resource transfer a representation of its state. GET requests.." host: cl8d.tistory.com favicon: https://t1.daumcdn.net/tistory_admin/favicon/tistory_favicon_32x32.ico image: https://img1.daumcdn.net/thumb/R800x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbcaxWP%2FbtsaVehmNOq%2FWjhyBhkNbrhjCrwh9l6Uo0%2Fimg.png url: https://kingchan223.tistory.com/377 title: "스프링 코어 2 - 주의사항1 (내부 호출 문제와 해결)" description: "프록시 내부 호출 문제 스프링은 프록시 방식의 AOP를 사용한다. 하여 AOP를 적용하기 위해서는 항상 프록시를 통해서 대상 객체(target)을 호출해야 한다. 만약 프록시를 거치지 않고 대상 객체를 직접 호출하면 AOP가 적용되지 않고, 어드바이스도 호출되지 않는다. AOP를 적용하면 스프링은 대상 객체 대신에 프록시를 스프링 빈으로 등록한다. 따라서 스프링은 의존관계 주입시에 항상 프록시 객체를 주입한다. 프록시 객체가 주입되기 때문에 대상 객체를 직접 호출하는 문제는 일반적으로 발생하지 않는다. 하지만 대상 객체의 내부에서 메서드 호출이 발생하면 프록시를 거치지 않고, 대상 객체를 직접 호출하는 문제가 발생한다. 예제를 통해 내부 호출이 발생할 때 어떤 문제가 발생하는지 알아보자. 아래는 간단한 .." host: kingchan223.tistory.com favicon: https://t1.daumcdn.net/tistory_admin/favicon/tistory_favicon_32x32.ico image: https://img1.daumcdn.net/thumb/R800x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc0vNGV%2FbtrqUT2w1HB%2FMcdVZjwEYu0MsF2W2quDzK%2Fimg.png url: https://www.mangoboard.net/MangoWorkRoom.do title: "망고보드 로그인" description: "로그인을 하여 망고보드 서비스를 이용할 수 있습니다." host: www.mangoboard.net image: http://www.mangoboard.net/og_01.jpg url: https://9oormthon.goorm.io/collection title: "구름톤 전시관" description: "상호명 구름 대표이사 류성태" host: 9oormthon.goorm.io image: https://oopy.lazyrockets.com/api/rest/cdn/image/01933cbe-8e67-7669-9c19-6521800cb89a.png url: https://velog.io/@moey920/%EC%95%88%EC%A0%95%EC%A0%81%EC%9D%B8-%EC%9A%B4%EC%98%81%EC%9D%84-%EC%99%84%EC%84%B1%ED%95%98%EB%8A%94-%EB%AA%A8%EB%8B%88%ED%84%B0%EB%A7%81.-%ED%94%84%EB%A1%9C%EB%A9%94%ED%85%8C%EC%9A%B0%EC%8A%A4%EC%99%80-%EA%B7%B8%EB%9D%BC%ED%8C%8C%EB%82%98#%EC%BB%A8%ED%85%8C%EC%9D%B4%EB%84%88-%EC%9D%B8%ED%94%84%EB%9D%BC-%ED%99%98%EA%B2%BD-%EB%AA%A8%EB%8B%88%ED%84%B0%EB%A7%81%ED%95%98%EA%B8%B0 title: "안정적인 운영을 완성하는 모니터링, 프로메테우스와 그라파나" description: "메트릭이란?시계열 데이터베이스란?애너테이션으로 매트릭 수집하기멀티 컨테이너 패턴다양한 종류의 프로메테우스 익스포터PromQL 정규 표현식쿠버네티스 내에서 도메인 이름을 제공하는 CoreDNSSLI, SLO, SLA경보 메세지의 출력은 왜 느린가요?본 게시물은 \"컨테이너" host: velog.io favicon: https://static.velog.io/favicons/favicon-32x32.png image: https://velog.velcdn.com/images/moey920/post/c3c3d244-e8b8-44a0-a854-ec749979a652/image.png url: https://oliveyoung.tech/blog/2024-04-01/testcode-use-fixture-monkey/ title: "TestFixture를 쉽게 생성해 주는 라이브러리가 있다? | 올리브영 테크블로그" description: "🙉FixtureMonkey로 TestFixture를 만들고 테스트 코드 작성하기" host: oliveyoung.tech favicon: https://oliveyoung.tech/favicon-32x32.png?v=a4b11f19c0d38aff2ebd465d8801cd2d image: https://oliveyoung.tech/static/996135859c52f2ace93dacd40b5b60fd/5504e/thumbnail.jpg url: https://mangkyu.tistory.com/241 title: "[Java] 제네릭과 와일드카드 타입에 대해 쉽고 완벽하게 이해하기(공변과 불공변, 상한 타입과 하한 타입)" description: "이번에는 공변과 불공변에 대해서 먼저 알아보고, 이후에 제네릭과 와일드카드에 대해 알아보도록 하겠습니다. 많은 분들이 어려워하는 제네릭인 만큼 쉽게 풀어서 설명하려고 노력했는데, 많은 도움이 되기를 바라겠습니다. 1. 공변과 불공변[ 공변과 불공변 ]제네릭과 와일드카드에 대해 이해하기 위해서 우리는 먼저 공변과 불공변에 대해 알아야 한다. 공변과 불공변은 각각 다음과 같다.공변(covariant) : A가 B의 하위 타입일 때, T 가 T의 하위 타입이면 T는 공변불공변(invariant) : A가 B의 하위 타입일 때, T 가 T의 하위 타입이 아니면 T는 불공변 대표적으로 배열은 공변이며, 제네릭은 불공변인데 이를 코드로 살펴보도록 하자. 예를 들어 배열의 요소들을 출력하는 메소드가 있다고 하.." host: mangkyu.tistory.com favicon: https://t1.daumcdn.net/tistory_admin/favicon/tistory_favicon_32x32.ico image: https://img1.daumcdn.net/thumb/R800x0/?scode=mtistory2&fname=https%3A%2F%2Ft1.daumcdn.net%2Ftistory_admin%2Fstatic%2Fimages%2FopenGraph%2Fopengraph.png url: https://inpa.tistory.com/entry/JAVA-%E2%98%95-%EC%A0%9C%EB%84%A4%EB%A6%AD-%EC%99%80%EC%9D%BC%EB%93%9C-%EC%B9%B4%EB%93%9C-extends-super-T-%EC%99%84%EB%B2%BD-%EC%9D%B4%ED%95%B4 title: "☕ 자바 제네릭의 공변성 & 와일드카드 완벽 이해" description: "자바의 공변성 / 반공변성 제네릭의 와일드카드를 배우기 앞서 선수 지식으로 알고 넘어가야할 개념이 있다. 조금 난이도 있는 프로그래밍 부분을 학습 하다보면 한번쯤은 들어볼수 있는 공변성(Covariance) / 반공변성(Contravariance) 합쳐서 '변성(Variance)' 이라하는 개념이다. 변성은 타입의 상속 계층 관계에서 서로 다른 타입 간에 어떤 관계가 있는지를 나타태는 지표이다. 그리고 공변성은 서로 다른 타입간에 함께 변할수 있다는 특징을 말한다. 이를 객체 지향 개념으로 표현하자면 Liskov 치환 원칙에 해당된다. 예를들어 배열(Array)과 리스트(List)가 있다고 하자. 자바에서 각 변성의 특징은 다음과 같이 된다. 공변 : S 가 T 의 하위 타입이면, S[] 는 T[] 의 .." host: inpa.tistory.com favicon: https://tistory2.daumcdn.net/tistory/4939852/5c9a55d8962c4e0fbe6292153897ff69 image: https://img1.daumcdn.net/thumb/R800x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbM5aOa%2FbtrQ271uBLD%2FEj3wVOUWR3QKmWk8KBeOf1%2Fimg.webp url: https://javacan.tistory.com/entry/ratelimiter-ratelimitj-bucket4j-intro title: "시간 당 실행 횟수 제한 라이브러리 3종 소개: RateLimiter, RateLimitJ, Bucket4j" description: "특정 시간 동안 실행 횟수를 제한하기 위한 라이브러를 검색해서 아래 3가지 정도를 찾았다.RateLimiter (guava, https://github.com/google/guava)RateLimitJ (https://github.com/mokies/ratelimitj)Bucket4j (https://github.com/vladimir-bukhtoyarov/bucket4j)이 글에서는 각 라이브러리의 사용법을 간단하게 살펴본다. Guava RateLimiterGuava에 포함된 RateLimiter를 사용하면 초당 실행 횟수를 제한할 수 있다. 이 클래스를 사용하려면 다음 의존을 추가한다. com.google.guava guava 26.0-jre 사용 방법은 다음과 같다. private RateLimit.." host: javacan.tistory.com favicon: https://t1.daumcdn.net/tistory_admin/favicon/tistory_favicon_32x32.ico image: https://img1.daumcdn.net/thumb/R800x0/?scode=mtistory2&fname=https%3A%2F%2Ft1.daumcdn.net%2Ftistory_admin%2Fstatic%2Fimages%2FopenGraph%2Fopengraph.png url: https://jane514.tistory.com/12 title: "Codecov로 code coverage 확인해보기" description: "매번 단위테스트가 현재 프로젝트에 대해 얼마나 커버를 하는지 메서드 line 단위로 확인을 하고 싶어 code coverage에 대해 알아보게 되었습니다. 그 중에서도 다른 레퍼런스에 비해 많이 검색되고, 자체 docs를 잘 관리하고 있는 Codecov 를 최종적으로 선택하게 되었습니다. PR에 보기 편하게 report를 해주고, Github Actions와 쉽게 연동할 수 있도록 기능을 제공하고 있었기 때문입니다. Codecov 회원가입 깃허브 레파지토리와 연동이 필요하다면 반드시 깃허브 계정으로 로그인이 되어야 합니다. 깃허브 계정으로 소셜로그인을 했다면, 다음 창으로 현재 내 깃허브 레파지토리에 접근하겠다는 Access Authorize 관련 창이 뜨게 됩니다. 혹시 슬랙과 깃허브를 연동해보셨다면 .." host: jane514.tistory.com image: https://img1.daumcdn.net/thumb/R800x0/?scode=mtistory2&fname=https%3A%2F%2Ft1.daumcdn.net%2Ftistory_admin%2Fstatic%2Fimages%2FopenGraph%2Fopengraph.png url: https://ddd4117.github.io/2021/06/spring-async%EB%9E%80/ title: "[Spring] Async란?" host: ddd4117.github.io favicon: https://ddd4117.github.io/images/favicon.png image: https://user-images.githubusercontent.com/2491418/84342949-d3586b80-abe1-11ea-99ff-e67647db8354.png url: https://develoyummer.tistory.com/112 title: "[프로젝트]알림 기능 구현(SSE, Spring AOP)" description: "💡알림기능 사용목적 yata project에서는 앱 사용의 편의성을 위해 카풀 신청 완료시, 또는 내가 쓴 게시글에 신청 요청이 왔을 때 알림 기능을 넣기로 결정하였고, 로그인 상태일 때 실시간으로 알림이 오도록 구현하도록 하였다. 알림 기능을 만들며, Spring AOP를 통해 기능분리를 하였고, 유지보수성, 확정성을 위해 Spring Annotation을 활용하여 적용하였다. 먼저 같이 Notify와 관련된 controller,dto,entity,repository,service 클래스를 정의해 줄 것이다. 그 후 Custom Annotation에 Advice를 붙여 NotifyAspect를 구현한다. AOP에 대한 것은 아래 포스팅에서 자세하게 다뤘다. Spring AOP란? [프로젝트]Custom.." host: develoyummer.tistory.com favicon: https://t1.daumcdn.net/tistory_admin/favicon/tistory_favicon_32x32.ico image: https://img1.daumcdn.net/thumb/R800x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbZU7k1%2Fbtsmlm1mhTt%2FgTjGk9NpHmkM3JArs71he0%2Fimg.png spring 동작 관련 정보 url: https://rockintuna.tistory.com/22?category=829035 title: "Spring Data JPA" description: "Spring Data JPA Spring Data JPA 원리 JpaRepository 인터페이스 데이터 접근 오브젝트 역할을 하는 매직 인터페이스. @Repository 애노테이션 없이 빈으로 등록 됨. 기본적으로 CRUD 메서드를 제공해준다. public interface PostRepository extends JpaRepository { } @EnableJpaRepository : @Configuration 스프링 설정 클래스에 붙여야 JpaRepository 인터페이스를 사용할 수 있다. (스프링 부트에서는 자동으로 설정된다.) @EnableJpaRepository는 JpaRepositoriesRegistrar.class를 import 하는데, 이 클래스가 JpaRepository 인터페이스를 .." host: rockintuna.tistory.com favicon: https://t1.daumcdn.net/tistory_admin/favicon/tistory_favicon_32x32.ico image: https://img1.daumcdn.net/thumb/R800x0/?scode=mtistory2&fname=https%3A%2F%2Ft1.daumcdn.net%2Ftistory_admin%2Fstatic%2Fimages%2FopenGraph%2Fopengraph.png url: https://jaehoney.tistory.com/180?category=1116691 title: "Spring - 샤딩 모듈 개발 이야기 (feat. AbstractRoutingDataSource)" description: "동적 데이터 소스와 스키마 이름API를 개발할 때 Java Spring으로 프로젝트를 진행하고 싶었는데 어려움이 있었다.해당 문제를 해결하고 세미나에서 발표한 내용에 대해 정리한다.모든 아키텍처나 코드는 실제 서비스와 무관하며 설명을 위해 만든 부분임을 알린다.API를 Java Spring으로 할 수 없었던 이유는 서비스의 DB구조 때문이었다.구조를 보면 DB 서버를 여러 대로 샤딩(Sharding) 하고 있고, 스키마도 분산되어 있다.데이터를 저장할 때 유저가 속한 지역별로 데이터를 특정 DB서버의 특정 스키마에 저장해서 사용한다.board_01에서 01을 파티션이라고 칭한다.특정 유저의 정보가 어떤 DB 서버의 몇 번째 파티션(스키마) 에 저장되어 있는지는 Region DB에 저장되어 있고, DB를 .." host: jaehoney.tistory.com image: https://img1.daumcdn.net/thumb/R800x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbIIqBY%2FbtrA3gUWajc%2F5Q6E8srfThWk2V16ltgbXK%2Fimg.png DB url: https://velog.io/@gkdbssla97/Project-SpringBoot-MySQL-PostgreSQL-Multi-DB-%EC%97%B0%EB%8F%99-1 title: "[Project] (1) SpringBoot MySQL + PostgreSQL (Multi DB 연동)" description: "토이 프로젝트를 진행하면서 발생했던 문제에 대한 본인의 생각과 고민을 기록한 글입니다.기술한 내용이 공식 문서 내용과 상이할 수 있음을 밝힙니다.Mysql 공식문서 참고: https://dev.mysql.com/doc/refman/8.0/en/Postgre 공" host: velog.io favicon: https://static.velog.io/favicons/favicon-32x32.png image: https://images.velog.io/velog.png url: https://velog.io/@soyeon207/%EB%98%91%EB%98%91%ED%95%98%EA%B2%8C-PR%EC%9D%84-%ED%86%B5%ED%95%B4-%EC%BD%94%EB%93%9C%EB%A6%AC%EB%B7%B0-%ED%95%98%EA%B8%B0 title: "똑똑하게 PR을 통해 코드리뷰 하기" description: "코드리뷰를 똑똑하게 해봅시다" host: velog.io favicon: https://static.velog.io/favicons/favicon-32x32.png image: https://velog.velcdn.com/images/soyeon207/post/1f73899a-7505-4ae9-8236-d03640f04fe9/image.png url: https://hudi.blog/zero-downtime-deployment/ title: "무중단 배포 아키텍처와 배포 전략 (Rolling, Blue/Green, Canary)" host: hudi.blog favicon: https://hudi.blog/favicon-32x32.png?v=783d202426de32b9eb1449c3fca1b518 image: https://hudi.blog/og-image.png url: https://ksh-coding.tistory.com/119#4.%20%ED%8C%80%EB%B0%94%ED%8C%80%20%EB%AC%B4%EC%A4%91%EB%8B%A8%20%EB%B0%B0%ED%8F%AC%20%08%EA%B5%AC%EC%A1%B0-1 title: "팀바팀 무중단 배포 구현기 (feat. 무중단 배포 3가지 방식)" description: "0. 들어가기 전 팀바팀 서비스 요구사항 중에 다음과 같은 요구사항이 존재했습니다. 서비스를 배포하는 중간에도 사용자는 서비스를 계속해서 사용할 수 있어야 한다. 이러한 요구사항을 구현하기 위해서는 서비스 배포 시에 무중단 배포를 구현해야 했습니다. 그래서 기존 팀바팀 서비스의 배포 시 문제 상황과 무중단 배포 방식들을 살펴보고 팀바팀에는 어떤 무중단 배포 방식을 사용했는지 기록하고자 합니다. 1. 팀바팀 서비스의 배포 시 문제 상황 기존 팀바팀 서비스의 배포 시에는 '다운 타임'이라는 시간이 존재했습니다. 다운 타임 : 서비스가 중단되는 시간 이처럼 다운 타임 시 사용자들은 정상적인 서비스 이용이 불가능하게 됩니다. 팀바팀 서비스의 다운 타임을 측정해본 결과, 약 15초 정도의 다운 타임이 발생했습니다.." host: ksh-coding.tistory.com favicon: https://t1.daumcdn.net/tistory_admin/favicon/tistory_favicon_32x32.ico image: https://img1.daumcdn.net/thumb/R800x0/?scode=mtistory2&fname=https%3A%2F%2Ft1.daumcdn.net%2Ftistory_admin%2Fstatic%2Fimages%2FopenGraph%2Fopengraph.png url: https://velog.io/@hiy7030/Spring-Testing-Code-2 title: "[Spring] Testing Code - 슬라이스 테스트" description: "슬라이스 테스트(Slice Test)> Solo Project로 진행했던 TODO applicatin 기반으로 진행깃허브 링크단위 테스트의 경우에는 테스트를 진행하는 테스트 케이스(메서드)에 @Test 애너테이션을 추가한 것만으로도 원활한 진행이 가능했다.그" host: velog.io favicon: https://static.velog.io/favicons/favicon-32x32.png image: https://velog.velcdn.com/images/hiy7030/post/431ad357-3adb-4346-8464-473048f59229/image.png url: https://yozm.wishket.com/magazine/detail/2900/ title: "2025년 쿠버네티스 표준 아키텍처 | 요즘IT" description: "2025년 쿠버네티스는 이제 완연하게 성숙한 프로젝트가 된 것 같습니다. 그리고 쿠버네티스와 밀접한 연관이 있는 클라우드 네이티브 컴퓨팅 재단에서 성숙한 제품이라고 표현하는 졸업 프로젝트는 2024년 11월 09일 기준, 총 29개가 발표되었습니다. 이러한 제품의 높은 성숙도에도 불구하고 여전히 쿠버네티스를 원활하게 사용하기 위해서는 많은 제품을 이해하고 선택해야 합니다. 2025년 쿠버네티스를 조합하는 방법 그리고 나아가야 하는 방법에 대해서 고민하신다면, 이 글에서 소개할 구성이 큰 도움이 될 것이라고 생각합니다." host: yozm.wishket.com favicon: https://yozm.wishket.com/static/renewal/img/news/favicon-32.png image: https://yozm.wishket.com/media/news/2900/tm2.png url: https://www.borntodare.me/deb2c288-2247-4be7-957f-202f03eebdc5 title: "DDD 기반의 아키텍처 학습" description: "들어가기에 앞서" host: www.borntodare.me url: https://dj-min43.medium.com/git-%ED%94%84%EB%A1%9C%EB%8B%B5%EA%B2%8C-commit%ED%95%98%EB%8A%94-%EB%B2%95-2d0fc890f59a title: "git: 프로답게 commit하는 법" description: "1. 얼마나 자주 commit 하십니까?" host: dj-min43.medium.com favicon: https://miro.medium.com/v2/5d8de952517e8160e40ef9841c781cdc14a5db313057fa3c3de41c6f5b494b19 image: https://miro.medium.com/v2/da:true/resize:fit:1200/0*xrbBqEHwBp2HfpEh url: https://jandari91.github.io/posts/nvidia/ title: "RHEL8.5 NVIDIA 설치" description: "이 글은 RHEL(Red Hat Enterprise Linux)에 Tensorflow를 설치하기 위한 글입니다." host: jandari91.github.io favicon: https://jandari91.github.io/assets/img/favicons/favicon-32x32.jpg