목록Tech (11)
우당탕탕

@Transactional ( 트랜잭션 )에 대한 이해트랜잭션의 개념트랜잭션은 데이터베이스에서 수행되는 작업의 묶음으로, 일련의 작업이 모두 성공적으로 완료되거나 모두 실패해야 하는 특성을 가집니다. 이를 ACID 속성이라고 하며, 아래와 같은 특징을 가집니다원자성(Atomicity): 트랜잭션 내의 모든 작업이 성공해야만 데이터베이스에 반영됩니다. 하나라도 실패하면 전체가 롤백되어야 합니다. ( ALL OR NOTHING )일관성(Consistency): 트랜잭션이 완료되면 데이터베이스는 일관된 상태를 유지해야 합니다.격리성(Isolation): 동시에 실행되는 트랜잭션 간에 서로 영향을 미치지 않아야 합니다.지속성(Durability): 트랜잭션이 성공적으로 완료된 후에는 그 결과가 영구적으로 저장되..

Spring Security를 활용하여 웹 애플리케이션의 인증 및 인가를 설정하고 JWT를 통한 보안 강화를 구현하는 방법 1. Spring Security란?Spring Security는 Java 애플리케이션을 위한 강력하고 커스터마이징이 가능한 보안 프레임워크이다. 이 프레임워크는 웹 애플리케이션의 보안을 강화하는 데 필수적이며, 인증(Authentication)과 인가(Authorization) 기능을 제공한다.2. 인증(Authentication)과 인가(Authorization) - 인증(Authentication)사용자가 누구인지 확인하는 과정으로 예를 들어, 로그인 시 사용자가 입력한 아이디와 패스워드가 맞는지 검증하는 것을 인증이라 한다.- 인가(Authorization)인증된 사용자가 특..
isNew() 메서드를 활용하여 select 쿼리를 방지하고 데이터 삽입 성능을 최적화하는 방법 1. Persistable 인터페이스란?JPA에서는 엔티티 객체의 상태를 관리하기 위해 다양한 방법을 제공한다. 그중 하나가 Persistable 인터페이스이다.이 인터페이스는 엔티티가 새로 생성된 상태인지, 아니면 이미 존재하는 상태인지를 판단하는 isNew() 메서드를 제공하며 오버라이드하여 사용이 가능하다.2. isNew() 메서드의 역할isNew() 메서드는 JPA가 엔티티의 상태를 결정하는 데 사용되며 return 값으로 true와 false 값을 반환할 수 있다. 만약 true를 반환한다면 JPA는 해당 엔티티를 새로운 것으로 인식하고 insert 쿼리를 수행하고 반대로 false를 반환하면, J..

최근에 주변에서 개발을 시작하려는 지인분들이 많아 Git과 Github에 대해 가이드를 적어보려 한다. Git과 Github에 대해 간략하게 설명하고 Git 이란? Git은 분산 버전 관리 시스템(DVCS)로, 개발자들이 소스코드의 변경 사항을 추적하고 협업할 수 있도록 도와주는 도구이다. 여러 개발자들이 서로 다른 브랜치에서 작업을 진행하고, 작업한 부분을 병합하는 것까지 원활하게 지원해 준다. GitHub이란? GitHub은 Git을 기반으로 하는 원격 저장소 호스팅 서비스로, 개발자들이 프로젝트를 공유하고 협업할 수 있는 온라인 플랫폼이다. 코드 리뷰와 이슈 트래킹, 프로젝트 관리 등의 부가 기능 또한 제공한다. 따라 해보기 1. Git 설치 Git 공식 홈페이지(https://git-scm.com..

오늘은 최근 지인들에게 많은 질문을 받고 있는 성능 최적화와 스케일링 전략에 대해 적어보려고 한다.성능 최적화와 스케일링은 백엔드 개발에서 핵심적인 요소이다. 서비스의 성공 여부와 직결되는 이슈이기 때문에 꾸준한 최적화와 효율적인 스케일링 전략은 선택이 아닌 필수이다.성능 최적화 전략 1. 캐싱 캐싱이란 반복적으로 사용되는 데이터나 계산 결과를 메모리에 저장하여 빠르게 액세스 할 수 있도록 하는 기법이다.데이터베이스에 접근하는 데 시간이 많이 걸리는 작업일 경우, 캐싱을 사용하여 빈번하게 사용되는 데이터를 빠르게 가져올 수 있다. 예시로 Redis와 같은 인메모리 캐시 솔루션을 활용하여 조회 속도를 크게 향상 시킬 수 있다.캐싱의 종류로는 아래와 같다. 1-1. 지역캐싱 (Local Caching) 지..

마이크로서비스 아키텍처(MSA)는 작고 독립적인 서비스들의 집합으로 구성된 애플리케이션 구조이다 이번 포스팅에서는 마이크로서비스 아키텍처(Microservice Architecture)와 모놀리식 아키텍처(Monolithic Architecture)의 장단점을 비교하고, 각각 어떤 상황에서 각각이 적합한지에 대해 알아보겠다. 모놀리식 아키텍처 (Monolithic Architecture) 모놀리식 아키텍처는 전통적인 개발 방식으로 하나의 프로젝트에 모든 기능을 함께 포함한다. 이렇게 하면 코드 베이스가 커질수록 개발 및 배포에 복잡성이 증가한다. 아래는 모놀리식 아키텍처의 예시이다. 모놀리식 아키텍처의 경우 위의 그림과 같이 모듈단위로 쪼개는 것이 아닌 하나의 프로젝트로 전체 애플리케이션을 묶어서 개발하..