분류 전체보기 76

[코딩 테스트 합격자 되기] 코딩테스트 사전 준비 (+ 알고리즘 효율 분석)

코딩테스트 사전 준비프로그래머스 활용다른 사람의 풀이 보기테스트 케이스 직접 추가충분한 시간을 들여 문제를 분석한 후, 코드 구현하기 전에 예외 상황을 충분히 확인할 수 있도록 나만의 테스트 케이스 만드는 연습을 해야함공부 습관기록하기!문제를 보면 어떤 알고리즘을 적용하려 했는지, 근거는 무엇인지, 문제를 푸는 과정에서 내가 떠올린 알고리즘을 어떻게 코드로 만들려 했는지 등 전 기록을 보면서 복기이 과정에서 무엇을 모르는지 알 수 있게 됨시험 보듯 공부하기평소에 시간 배분하면서 코딩 테스트 공부하기시간 배분 연습 안함/함 차이가 나중에 결과가 많이 다를 것임2-3개월은 걸릴거임무조건 짧은 시간 내에 할 수 없음, 꾸준히 해야함나만의 언어로 요약 내가 정말로 이해하고 있는지 알아보기 위해서코딩테스트 효율적..

Books 2026.01.09

[모두의 플리] JMeter로 OS 성능 테스

OS과 원본 QueryDSL의 성능 차이를 재보고 싶어서 JMeter를 사용해봤다. 로컬 DB에는 약 1000개의 컨텐츠 데이터를 넣어주고 시작했다. 1. Thread Group 추가Number of Threads (user) - 유저 갯수Ramp up period (seconds) - 몇초 후에 모든 유저가 시작하는지Loop count (user) - 각 유저가 몇번 하는지나는 테스트할때 이렇게 설정했다: - 유저 수 - 100- ramp up - 20- loop count - 5 2. Thread Group에서 HTTP Request 추가 3. Header Manager 추가 - bearer 토큰을 넣어줬다. 4. 결과QueryDSL OS 결과적으로... OpenSearch가 QueryDSL보다 약 ..

카테고리 없음 2026.01.05

[모두의 플리] watcherCount를 Redis로 리팩토링

상황프로젝트에서 실시간 콘텐츠 시청 세션 기능을 구현했다. 사용자가 영상 페이지에 들어오면 시청자로 집계되고, 나가면 집계에서 빠져야 한다. 이 숫자는 웹소켓을 통해 모든 사용자에게 실시간으로 브로드캐스팅되어야 했다.문제점프론트에서 콘텐츠를 불러올 때, 요구하는 dto에 watcherCount가 들어있다.그래서 기존 코드는 콘텐츠 엔티티에 watcherCount 필드를 사용했다. 그래서 WatchingSessionService에서 watchingSession이 업데이트 될때마다 이 콘텐츠의 필드도 업데이트 하는 방식으로 했다:contentRepository.incrementWatcherCount(content.getId());contentRepository.decrementWatcherCount(cont..

Codeit/프로젝트 2025.12.23

[코드잇 스프린트] Spring 백엔드 4기 수료 후기 및 회고

어느새 7개월이 지나갔고...긴 시간처럼 느꼈던 부트캠프가 끝났다. 5월부터 12월까지 수강했었고, 그 동안 정말 많은 일이 일어났다. 그래서 오늘은 반년동안 코드잇 스프린트 Spring 백엔트 4기 후기를 작성해보자 한다!정보보다는 개인적인 생각과 회고가 많이 담겨있는 글이다. 👩🏻‍💻 왜 코드잇 부트캠프를 선택했을까? 일단 나는 전공자이지만, 스스로가 느끼기에는 기본기가 많이 부실한 편이었다. 아직 졸업은 하지 않았지만 졸업을 하면 바로 취직 준비를 해야한다는 생각에, 자신이 너무 너무 준비가 안됐다고 느꼈다.그래서 4학년으로 올라가기 전에 휴학을 하기로 선택했고, 이 기간 동안 스스로가 무엇을 좋아하는지 탐색해보려고 했다.(나중에 든 생각이지만 휴학은 정말 잘한 선택이었던 것 같다.. 학교 ..

Codeit 2025.12.19

[모두의 플리] ES 성능 테스트!

ES 검색기능을 구현 후, 성능 테스트를 해봤다. 먼저 TimeConfiguration을 빈드로 수동 등록해줘야 했다:@Configurationpublic class TimerConfiguration { @Bean public TimedAspect timedAspect(MeterRegistry meterRegistry) { return new TimedAspect(meterRegistry); }} ContentController: @Timed("search.sql") @GetMapping("/test/sql") public CursorResponseContentDto findContentsRepository(@Valid @ModelAttribute ContentSearchRequest r..

Codeit/프로젝트 2025.12.09

[모두의 플리] 트러블슈팅 - 실시간 시청 세션 동기화와 Race condition

내가 짰던 코드 흐름WatchingSessionController현재 시청자 목록을 조회(GET)하여 화면에 렌더링하는 역할WebSocketEventListenerSessionSubscribeEvent 발생시 여기서 시청 세션 (WatchingSession 엔티티)를 생성하고, 그 정보를 가져다 payload로 보내서 실시간 입장 브로드캐스트SessionUnsubscribeEvent / SessionDisconnectEvent 발생 시 삭제된 WatchingSession 의 정보를 가져다 payload로 보내서 실시간 퇴장 브로드캐스트결국 화면에 보이는 실시간 참여자 수를 실시간으로 업데이트가 되게 해준다.컨트롤러의 조회 API는 이미 들어와 있던 사람들 정보를 볼 수 있게 해주고, WebSocketEv..

Codeit/프로젝트 2025.12.02

Elastisearch 토이 프로젝트 만들어보기 (프로젝트를 위한 준비..)

https://www.youtube.com/@liliumbosniacumcode/videos Lilium CodeTrying to share my knowledge as best as I can. All code is available on github https://github.com/liliumbosniacumwww.youtube.com이분이 올리신 강의를 따라하면서 받아적은 노트들이다!elasticache를 사용하기 위해 일단 docker compose를 만들었다:version: '3.7'services: elasticsearch: image: docker.elastic.co/elasticsearch/elasticsearch:7.17.10 container_name: elasticsea..

Codeit/프로젝트 2025.11.27

[AWS] Elastisearch Analyzer- 데이터가 검색되는 원리(텍스트 분석/처리)

근본 - 검색이 잘되도록 데이터를 저장하면 된다..! 문서는 ES DB에 저장되기 전에, 분석기(Analyzer)라는 과정을 한번 거친다.정확하게 말하면, 문서의 필드 타입 중에 TEXT라는 문장들은 분석기를 거치고 DB에 저장된다!분석기에는 Character Filter, Tokenizer, Token Filter이 있다여기서 잠깐 - TEXT vs KEYWORDES에서 문자열을 저장하는 타입은 크게 두가지다 - 그냥 분석기를 거치냐 안거치냐의 차이다.TEXT분석기를 통해 문장이 토큰 (단어)로 쪼개진다.전문 검색 (full text search)에 쓰이는데, 예를 들면 "애플 맥북 프로"라고 저장해두고 "맥북"만 검색해도 찾고 싶을 때 사용된다.이 블로그 글은 TEXT 기반의 예시로 작성됐다.KEYW..

Cloud 2025.11.27

[AWS] Elastisearch - 인프라 기본 개념 정리

모두의 플리 프로젝트를 하는 도중 Elastisearch를 사용해서 고도화하는 부분을 맡게 되었다.컨텐츠 검색 리팩토링 - Elastisearch의 Full Text Search 기능을 활용하여 개선Elastisearch 배포 - Docker을 사용하여 로컬 환경에 구축하거나 AWS OpenSearch 서비스를 활용Elastisearch데이터가 json 문서 (document) 형태로 저장되는 분산형 NoSQL 데이터베이스수평적 확장이 가능하고 데이터베이스를 여러 서버 (노드)에서 실행할 수 있음텍스트, 숫자, 지리 공간(Geo-spatial) 데이터, IP 주소 등 다양한 데이터 타입을 지원인덱스(Indexes), 문서 (Document)위에서 언급했듯이, Elasticsearch는 문서형 데이터 베이..

Cloud 2025.11.26

[모두의 플리] 고도화 - redis를 이용한 분산환경 고려 (pub/sub)

AWS ECS 등을 활용해 서버를 2대 이상 증설하는 분산 환경(Scale-out)에서는 기존 WebSocket 구현 방식에 문제가 발생한다. 이를 해결하기 위해 Redis Pub/Sub를 도입한 과정을 정리한다. 현재 WebSocketConfig:@Configuration@EnableWebSocketMessageBroker@RequiredArgsConstructorpublic class WebSocketConfig implements WebSocketMessageBrokerConfigurer { private final AuthChannelInterceptor authChannelInterceptor; @Override public void registerStompEndpoints(StompEnd..

Codeit/프로젝트 2025.11.26