전체 글
-
Redis 캐싱 전략CS-Theory/DB 2025. 11. 8. 20:09
0.INTRO다음 3가지의 문장을 보고 머리 속의 각각의 관련 내용을 그릴 수 있도록 관련 정보를 제공하고자 합니다.캐시를 언제 사용할지Redis 캐시 적용 시스템 아키텍처 (Inline cache, cache aside pattern)Redis 세션 업데이트 방식목차캐시란 무엇인가Redis 란 ?Redis 캐싱 전략Redis 활용 사례 및 아키텍처 설계1. 캐시란 무엇인가1.1 캐시 도입 상황의 대한 이해다음과 같은 질문에 대하여 생각을 한 번 해보면 좋을 것 같습니다.Q : 아래의 시스템 아키텍처에서 사용자 조회가 늘어나면 어떻게 대처를 할 것인가?운영 환경을 경험하신 분들이라면, Scale Up, Scale Out , 로드 밸런서 도입 , Read write 분리 그리고 캐시 레이어를 도입 하는 생..
-
무중단 배포를 위한 첫 걸음Project/NYAM 2025. 9. 20. 16:50
앱 심사로 인한 api 서버에서 제공하는 api버전 관리 문제부터 무중단 배포의 대한 고민과 해결 과정을 담은 포스트입니다. 23년 초에 작성한 글을 최대한 유지하면서 25년에 리비전 하였습니다. 팀에서는 대학생들이 사용하는 "앱"과 매장의 사장님들 혹은 팀의 운영팀이 매장을 등록하는 "웹" 두가지의 서비스를 운영 중입니다. 서비스 중인 모바일앱과 클라이언트 웹은 단일 서버 어플리케이션에서 API 를 사용합니다. 인프라는 다음과 같이 구성이 되어 있습니다. - 1개의 EC2 에 2개의 백엔드 어플리케이션 (개발용 Dev서버, 운영 서버), Nginx 서버 - 2개의 DB Server(Dev 용, Release 용 MongoDB)- 1개의 EC2 에 2개의 프론트 어플리케이션 (개발용 Web서버..
-
Tomcat 의 동작원리 (Tomcat 내부 구성)Java&Spring/Spring 2025. 8. 2. 19:31
서버의 동작과 Tomcat 의 내부 구조이번 포스팅은 간단한 서버의 동작 원리와 Tomcat 을 설명합니다.Server에는 다양한 종류가 있으며 각각의 역할의 따라 구분합니다.WebServer - 요청에 맞는 정적파일을 반환해주는 역할WAS(Web Applicataion Server) - DB 또는 DB 서버에 접근하는 역할을 하거나, 복잡한 비즈니스 로직을 처리하는 역할프록시 서버, 배치 서버, 파일 서버 등등Webserver 만으로는 모든 일을 처리하는데 과부하가 걸리며 WAS 서버를 통해 사용자의 요청 부하를 분산합니다. 서버가 사용자의 요청을 어떻게 받는지의 대하여 기초적인 설명을 하면 다음과 같습니다. 사용자의 요청은 어떻게 처리하는가? 서버는 TCP 통신으로 외부 네트워크에서 들어온 요..
-
Spring 직렬화, dto 의 잘못된 이름의 함수가 있는 경우Java&Spring/Spring 2024. 6. 15. 17:47
Spring 의 컨트롤러 어노테이션인 RestController 를 사용하면, 함수의 리턴값이 json 으로 매핑이 된다. 다음과 같은 dto 의 경우는 getCapitalName 과 같은 함수가 있다. @Getterpublic static class RequestDTo { private final String name = "kris"; private final int age = 12 ; public String getThisIsFake() { return "fake"; } public String calculate() { return "false"; }} Spring 에서는 obejct mapper 의 replication 의 기능으로 이 함수가 필드 값을 호출하는 geeter 인지 아는 착각을 한다..
-
우아한 객체 지향 정리 (유투브)ProgrammingTheory/OOP 2023. 11. 8. 18:00
1. 무조건 lazy, 무조건 eager : 그런거는 없어, 경계를 잡는 방법의 차이다. 2. 연관관계를 끊자. 연관관계란 , 다른 객체를 탐색을 하는 경로로 디비 트랜잭션의 락을 전부 거는 상황이 나올수 있다.연관관계를 끊는 방법으로 객체의 다른 도메인의 속하는 객체의 id 를 넣고, 레포지토리에서 검색을 하자.레포지토리는 연관 관계를 정의하는 메서드로 이루어져 있어야 한다. 3. 도메인 에그리거트, 루트 를 생각하자.같이 생성이되는지, 같은 제약사항이 걸리는지 파악을 해야한다.같은 제약사항이 걸린다면 , 연관관계를 걸되, 다르면 그룹을 분리해서 id 로 참조하게 하여 데이터베이스 경합이 발생하는 성능 이슈를 최소화 해야한다. -> DDD 의 컨택스트를 잡는 기준이 될 수 도 있다. 왜 설계를..
-
Hindex - 프로그래머스 [자바]CodeingTestPrac/Java Coding Test 2023. 11. 6. 16:54
링크 : https://school.programmers.co.kr/learn/courses/30/lessons/42747 문제 H-Index는 과학자의 생산성과 영향력을 나타내는 지표입니다. 어느 과학자의 H-Index를 나타내는 값인 h를 구하려고 합니다. H-Index는 다음과 같이 구합니다. 어떤 과학자가 발표한 논문 n편 중, h번 이상 인용된 논문이 h편 이상이고 나머지 논문이 h번 이하 인용되었다면 h의 최댓값이 이 과학자의 H-Index입니다. 어떤 과학자가 발표한 논문의 인용 횟수를 담은 배열 citations가 매개변수로 주어질 때, 이 과학자의 H-Index를 return 하도록 solution 함수를 작성해주세요. 제한사항 과학자가 발표한 논문의 수는 1편 이상 1,000편 이하입니..
-
[모던 자바 인 액션] part 1 - 1Java&Spring/Java 2023. 11. 3. 16:24
"Stream 을 이용하면 에러를 자주 일으키며 멀티코어 cpu를 이용하는 것보다 비싼 synchorized 를 사용안해도 된다" "synchronized" 키워드는 다음과 같은 비용을 수반할 수 있다. 대기 시간(Wait Time): 한 스레드가 락을 획득하기 위해 다른 스레드가 락을 해제하기를 기다려야 할 때 발생합니다. 이는 특히 공유 자원에 대한 경쟁이 치열할 때 성능 저하를 가져온다. 컨텍스트 스위칭(Context Switching) 비용: 락을 기다리는 스레드들 사이에서 발생하는 컨텍스트 스위칭은 CPU 시간을 소비한다. 메모리 일관성 비용(Memory Consistency Costs): 락을 사용하여 메모리 캐시 사이의 데이터 일관성을 유지하는 데 있어 추가적인 메모리 배리어(memory b..
-
DTO , VO - "내 돈 1000원이 달라서 핫식스를 못 먹는다고 ?"ProgrammingTheory/DDD 2023. 10. 27. 13:25
이글은 테크톡의 각종 영상과 각종 블로그를 읽고 작성한다. 최종 수정 : 2023 년 10월 27일 , 최초 작성일 2023.03.27 이 글은 DTO , VO 그리고 lombok 의 @Data 를 다룬다 DTO ,VO 둘다 데이터를 저장하는 객체(Object)이다. DTO는 데이터를 전송하기 위한 객체이며 불변일 수 도 있다. VO 는 값에 관한 객체이며 일반적으로 불변이여야 한다. DTO : Data Transfer Object (데이터. 전송. 객체) 처음 단어를 보았을때 엥 이게 뭐야 라는 생각을 했었다. DTO 를 DDD 의 Layerd 아키택처에서 다음 두가지 경우로 이용 할 수 있다. 1. API Layer 즉 controller 단에서 사용자와 데이터를 특정 형식으로 주고 받는 경우 . 2..