전체 글
-
성장하자! - 트랜잭션데이터베이스 2025. 3. 19. 15:44
이 글을 작성하는 이유는 내가 최근에 기술면접을 보았다. 거기 질문 중에 하나였던 "트랜잭션을 왜 쓸까요?" 였다. 나는 단순하게 "변경사항이 있으면 commit 하거나 예기치 못한 예외가 있으면 Rollback를 해주기 위해서 사용한다" 라고 답을 했다. (너무 수준이 낮은 답변이였다고 생각한다.) 그리고 또 이런 질문이 있었는데 "DB Lock 알고 있나요?", "트랜잭션 격리 수준이 뭘까요?" 답을 제대로 못했다... 면접이 끝나고 면접 복기를 하는데 이 질문의 의도가 무엇이고 어떤 답을 했어야 했을까? 라는 생각이 들었다. 그래서 이번 글에서는 MySQL의 동시성에 영향을 미치는 Lock, 트랜잭션, 트랜잭션의 격리 수준에 대해서 다시 공부를 하고자 이 글을 쓴다.우선 트랜잭션이다. 단순히 트랜..
-
[My-Books] Logback 적용기 - 설정해야겠지?개발 ing 2025. 3. 16. 17:44
해당 글은 NHN Academy 프로젝트 과정 My-books 서비스를 만들면서 했던 내용이다 이 글은 아래 포스트에서 부터 이어진다https://hyeonni.tistory.com/112 [My-Books] Logback 적용기 - Log의 중요성해당 글은 NHN Academy 프로젝트 과정 My-books 서비스를 만들면서 했던 내용이다 지금까지 개발을 하면서 가장 많이 듣고 가장 많이 했던 말이 있다 "에러가 나거나 하면 디버깅을 하지말고 우선 로hyeonni.tistory.comSpring Logback 설정하기에 앞서서... 일단 Java에서 흔히 사용하는 방식은 lombok라이브러리의 SLF4J(심플 로딩 파사드 for Java) 이다. SLF4J 이름 그대로 로깅 시스템에 대한 추상화를 제공..
-
캐시 전략은 무엇일까? - 2캐시 2025. 3. 13. 14:38
https://hyeonni.tistory.com/111 캐시(Cache) 무엇일까? - 1말하기에 앞서 우리는 흔히 사용하는 3-Tire 아키텍처 또는 모놀리식 구조에서트래픽이 증가하면 가장 먼저 데이터베이스에 부하가 집중된다이때 DB의 부하를 줄이고 응답속도를 높이기 위해 서hyeonni.tistory.com이전 글에서는 캐시(Cache)에 대해 설명했다.이번 글에서는 캐시를 어떤 방식으로 활용하는지 즉 캐시 전략에 대해 다룬다. 캐시 전략이란?캐시 전략이란 다음과 같은 요소를 고려하여 캐시를 운영하는 방법을 의미한다.어떤 데이터를 캐시에 저장할 것인가? 캐시 데이터를 얼마 동안 유지할 것인가?오래된 데이터를 어떻게 제거할 것인가?캐시 크기를 얼마나 설정할 것인가? 캐시 전략이 필요한 이유 캐시는 빠..
-
[My-Books] Logback 적용기 - 로그를 제대로 남겨보자!개발 ing 2025. 3. 11. 02:38
해당 글은 NHN Academy 프로젝트 과정 My-books 서비스를 만들면서 했던 내용이다 지금까지 개발을 하면서 가장 많이 듣고 가장 많이 했던 말이 있다 "에러가 나거나 하면 디버깅을 하지말고 우선 로그를 찍어서 로그 기록을 확인해봐라" 솔직히 이 말을 처음 들었을 때는 "왜 찍어야하지? 왜 로그 기록을 확인해야지?" 라는 생각이 든다 -> 작자도 그랬다 프로젝트 경험이 쌓일수록 로그 확인이 얼마나 중요한지 깨달았다 결론부터 말하면 무조건 로그를 찍고 로그 확인을 습관화하는 것이 개발에서 매우 중요하다 그럼 왜 로그가 왜 중요한지 대해 이번글에서 함께 살펴보겠다 1. 로그(Log) 란 무엇인가? log 는 애플리케이션이 동작하는 동안에 발생하는 이벤트나 상태 변화를 기록해 놓은 것이다 로그에도..
-
캐시(Cache) 무엇일까? - 1캐시 2025. 3. 10. 23:09
말하기에 앞서 우리는 흔히 사용하는 3-Tire 아키텍처 또는 모놀리식 구조에서트래픽이 증가하면 가장 먼저 데이터베이스에 부하가 집중된다이때 DB의 부하를 줄이고 응답속도를 높이기 위해 서버와 데이터베이스 사이에 캐시(Cache)를 도입한다캐시란? 캐시(Cache)는 자주 접근하는 데이터나 계산 결과를 메모리에 미리 저장해 두고필요할 때마다 빠르게 가져다 쓰는 임시 저장소이다. 좀더 쉽게 말하면 데이터나 값을 미리 복사해 놓는 임시 저장소 디스크 대신 메모리를 사용하기 때문에 읽고 쓰는 속도가 빠르다는 장점이 있다 사용 예시로는다이나믹 프로그래밍(DP) 에서 사용하는 메모이제이션 기법도 일종의 캐시 개념이고 JPA의 영속성 컨텍스트의 1차 캐시도 같은 거라고 보면 된다 캐시를 사용하는 이유 1. DB..
-
[Agarang] 지금까지 내가 잘 못 알고 있었던 점 (2) - 아키텍처 재구성개발 ing 2025. 3. 2. 15:43
해당 글은 SSAFY12기 공통 프로젝트 Agarang 서비스를 만들면서 했던 내용이다 일단 이 글의 목표는 확장성 있는 코드를 작성하는게 목표이다. https://hyeonni.tistory.com/108 [Agarang] 지금까지 내가 잘 못 알고 있었던 점 (1) - 문제제기해당 글은 SSAFY12기 공통 프로젝트 Agarang 서비스를 만들면서 했던 내용이다 이 글은 코드 작성 과정에서 내가 고민했던 점과 잘못 알고 있었던 개념을 정리한 글이다. 일단 코드를 한번 보자 Babhyeonni.tistory.com 이글은 위 포스트와 이어진다 이제 문제점을 파악 했으니 해당 글에서는 이런 문제점을 어떤식으로 풀었는지에 관한 이야기를 할것이다 일단 한마디로 말을 하자면 아키텍처를 수정했다 Control..
-
[DOSI:RAK] 부하테스트 시작 - CPU, 메모리, 디스크개발 ing 2025. 2. 17. 22:14
해당 글은 피우다 프로젝트 공모전 DOSI:RAK 서비스 끝마치고 하고 있는 내용이다. DOSI:RAK 프로젝트를 마무리하며 고민을 했다.앞으로 새로운 프로젝트를 시작할지 기존 프로젝트를 리팩토링하며 개선할지 선택해야 했다.결론은 기존 프로젝트를 더 깊이 분석하고 개선하는 것이었다. 그래서 부하테스트를 하기로 했고 하기전에 부하테스트 관련한 개념을 학습을 했다. 아래 글은 학습한 개념을 정리한 글이다. 부하 테스트를 수행하려면 어떤 요소를 측정해야 하는지 먼저 알아야 한다.대표적으로 CPU, 메모리, 디스크가 성능에 큰 영향을 미친다.CPU, 메모리, 디스크 CPU 명령어를 해석하고 실행연산작업을 한다. 메모리 CPU가 작업하기 위해 임시로 사용하는 공간디스크보다 메모리로부터 데이터를 가져올 때 속..
-
[Agarang] 지금까지 내가 잘 못 알고 있었던 점 (1) - 문제제기개발 ing 2025. 2. 8. 01:29
해당 글은 SSAFY12기 공통 프로젝트 Agarang 서비스를 만들면서 했던 내용이다 이 글은 코드 작성 과정에서 내가 고민했던 점과 잘못 알고 있었던 개념을 정리한 글이다. 일단 코드를 한번 보자 BabyService 클래스의 로직이다.public BabyResponse createBaby(Integer userId, BabyRegisterRequest babyRegisterRequest, MultipartFile multipartFile) { User user = userRepository.findById(userId) .orElseThrow( () -> new B..