본문 바로가기

spring4

데드락(Deadlock)이란? 실무에서 겪은 디버깅 사례와 ShedLock 적용기 데드락이란?데드락(Deadlock)은 두 개 이상의 프로세스나 스레드가 서로의 자원을 기다리며 무한정 대기하는 상황을 말한다. 마치 좁은 다리에서 두 차가 서로 마주보고 서있어 어느 쪽도 움직일 수 없는 상황과 비슷하다.간단한 데드락 예시일상생활로 비유하면 이런 상황이다:철수: "영희야, 네 펜 좀 빌려줘. 내 지우개 줄게."영희: "철수야, 네 지우개 좀 빌려줘. 내 펜 줄게."결과: 둘 다 상대방이 먼저 주기를 기다리며 영원히 대기...프로그래밍에서의 데드락 예시// 스레드 Asynchronized(lock1) { Thread.sleep(100); synchronized(lock2) { // lock2를 기다림 // 작업 수행 }}// 스레드 B (동시 실행)synchr.. 2025. 8. 31.
Java 실무에서 Redis 캐싱 제대로 활용하기 Redis 캐싱을 실무에 적용해본 경험을 정리해보자.Redis 캐싱 전략Cache-Aside (Lazy Loading)가장 많이 사용하는 패턴이다. 애플리케이션이 직접 캐시를 관리한다.public User getUser(Long userId) { User user = redisTemplate.opsForValue().get("user:" + userId); if (user == null) { user = userRepository.findById(userId); redisTemplate.opsForValue().set("user:" + userId, user, Duration.ofHours(1)); } return user;}Write-Through데이터 쓸.. 2025. 8. 18.
ORM(Object-Relational Mapping)은 꼭 써야 하나요? ORM이 뭐지?객체와 관계형 데이터베이스를 연결해주는 기술코드의 객체와 DB의 테이블을 매핑해줌Java의 Hibernate, JavaScript의 Sequelize, Python의 SQLAlchemy 등이 대표적ORM의 장점SQL 문법 몰라도 DB 조작 가능객체지향적으로 데이터 다룰 수 있음코드 재사용성 높아짐DB 변경시 코드 수정 최소화 (MySQL → PostgreSQL 등)SQL 인젝션 같은 보안 위험 줄여줌ORM의 단점복잡한 쿼리는 직접 SQL 쓰는 게 더 효율적일 때 있음성능 이슈 발생 가능 (N+1 문제 등)학습 곡선 존재꼭 써야 할까?프로젝트 규모/성격에 따라 다름소규모/중규모 프로젝트: ORM 써서 생산성 높이는 게 이득대규모/고성능 필요한 프로젝트: Raw SQL과 혼용하는 게 좋음회사/.. 2025. 5. 21.
Java와 Python 중 어떤 언어가 백엔드에 더 적합할까? 주니어 개발자로서 Java와 Python 중 백엔드 개발에 어떤 언어가 더 적합한지 고민해본 내용을 공유합니다.Java의 장점강력한 타입 시스템: 컴파일 시점에 오류를 잡아내 런타임 에러를 줄여준다. 큰 프로젝트일수록 이 장점이 빛난다.뛰어난 성능: JVM의 최적화와 JIT 컴파일러 덕분에 장기 실행 애플리케이션에서 Python보다 우수한 성능을 보인다.Spring 프레임워크: 의존성 주입, AOP 등 엔터프라이즈급 기능을 제공하며 대규모 시스템 구축에 탁월하다.동시성 처리: 멀티스레딩 지원이 잘 되어 있어 동시 요청 처리에 강점이 있다.엔터프라이즈 환경 친화적: 많은 기업들이 Java 기반 시스템을 운영하고 있어 취업 시 유리하다.Python의 장점간결한 문법: 읽기 쉽고 배우기 쉬워 개발 속도가 빠르.. 2025. 5. 20.