우아한 테크캠프 7기 소개 우아한 테크캠프 7기 지원동기작년 4월쯤 진로를 백엔드로 정하고 올해 초 이력서 지원을 하며 합격률을 보고 처참하다는 생각을 하였다.나는 아직 부족한게 많다는 것을 느꼈고 이 때 눈에 띈게 우아한 테크캠프 7기 모집 홍보글이였다. 내가 과연 붙을 수 있을까? 라는 걱정도 있었지만 밑져야 본전 ! 이라는 생각으로 도전을 하였다. 전형 및 팁이 글을 보고 계시는 분들이 가장 궁금해 하시는 부분이 어떻게 합격하였는지일 것 같다.각 전형의 내용과 팁이라면 팁을 적어보겠습니다. 1차 코테1차 코테는 알고리즘과 CS 객관식 문제였다. 코테 문제내용은 기억이 나지 않지만 난이도는 실버1 정도였던 것 같다.만약 백준에서 골드문제를 유형별로 풀 수 있는 수준이라면 충분히 통과하지 않을까 싶다 ..

전체 글
트랜잭션이란 ? 트랜잭션(Transaction)은 데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산들을 의미한다. RDBMS vs NOSQL 에서의 트랜잭션 원래 NOSQL에서는 트랜잭션을 제공해 주지 않았다. 하지만 시간이 지남에 따라 트랜잭션 기능을 추가해 주고 있다. ACID 원칙을 모두 지킬 수 있는 정도의 격리 수준이 아니기 때문에 잘 알아보고 사용을 하면 되겠다. 이 글에서는 RDBMS의 트랜잭션을 전제조건으로 작성하겠다. ( h2 DB로 테스트를 진행한다 ) 트랜잭션 동작 원리 트랜잭션은 작업의 단위로서 잘 수행되면 commit 하고 문제가 생기면 rollback을 한다. 기본적으로 rdbms는 autocommit을..
MSA vs Monolithic MSA MSA(Microservices Architecture)는 소프트웨어 시스템을 작은 독립적인 서비스로 분할하여 구축하는 아키텍처 패턴입니다. 각 서비스는 자체적으로 배포, 확장, 관리될 수 있으며, 다른 서비스와 독립적으로 개발될 수 있습니다. 이러한 서비스들은 주로 API를 통해 통신하며, 서로의 기능을 조합하여 전체 시스템을 구성합니다. 장점 확장성(Scale Out): 각각의 서비스는 독립적으로 배포되고 실행되므로 필요에 따라 개별적으로 확장할 수 있습니다. 유연성과 빠른 개발: 각 서비스는 작고 독립적이므로, 새로운 기능을 빠르게 개발하고 배포할 수 있습니다. 또한, 서비스는 다양한 기술 스택과 언어로 개발될 수 있어서 개발자들이 자유롭게 선택할 수 있습니다..
JPA N+1문제란 ? JPA(Java Persistence API)에서 N+1 문제는 데이터베이스 쿼리를 실행할 때 발생하는 성능 문제 중 하나입니다. 이 문제는 일반적으로 관련된 엔티티를 가져올 때 발생하는데, 예를 들어 N 개의 엔티티를 가져온 후에 그 엔티티와 관련된 다른 엔티티들을 가져오는 과정에서 발생합니다. 이때, 쿼리가 N+1번 실행되는 것이 문제입니다. 즉 연관된 엔티티를 가져오기 위해 추가로 쿼리가 발생하는 현상입니다. 원인 원인은 JPA 에서 연관관계가 있는 객체는 proxy 객체로 가져오기 때문이다. ( 데이터 로딩방식은 지연로딩이라고 가정 하자 ) Entity 연관관계 게시물과 댓글을 예시로 들어 설명해 보겠다. 게시물과 댓글은 서로 일대다 관계에 있다. Poster Entity ..
정규화란? 정규화는 데이터베이스 설계 과정에서 중복을 최소화하고 삽입, 수정, 삭제 이상을 방지하기 위해 데이터를 구조화하는 프로세스입니다. 이는 데이터베이스의 유연성과 일관성을 유지하는 데 도움이 됩니다. 정규화는 제1 정규형(1NF)부터 제5 정규형(5NF)까지 여러 단계로 이루어집니다. 정규화 목적 데이터 중복 최소화: 중복된 데이터를 최소화하여 데이터베이스의 용량을 줄이고 일관성을 유지합니다. 삽입, 수정, 삭제 이상 방지: 정규화된 데이터 모델을 사용하면 삽입, 수정, 삭제 작업이 데이터 일관성에 영향을 미치는 이상 현상을 방지할 수 있습니다. 데이터의 논리적 설계: 데이터베이스 구조를 보다 논리적으로 설계하여 쿼리 작성 및 유지 보수를 용이하게 합니다. 정규화 종류 제1 정규형(1NF) 각 열..
스프링 프레임워크는 빈(Bean) 관리에 대한 다양한 기능을 제공하는데, 그 중에서도 빈의 생명주기와 콜백(callback) 메커니즘은 중요한 부분입니다. 이번 글에서는 스프링에서 빈이 생성되고 소멸되는 과정과 빈의 초기화 및 소멸 단계에서 사용되는 콜백에 대해 알아보겠습니다. 빈 생명주기 (Bean LifeCycle) 스프링 빈의 생명주기는 크게 다음과 같은 단계로 나눌 수 있습니다. 빈 인스턴스화(Instantiation): 스프링 컨테이너는 빈의 클래스를 로드하고 빈의 인스턴스를 생성합니다. 의존성 주입(Dependency Injection): 빈에 필요한 의존성이 주입됩니다. 빈 초기화(Initialization): 빈이 초기화되는 단계로, 사용자 지정 초기화 작업이 수행됩니다. 빈 사용(Bean..
데이터 조회 방식 데이터베이스 조회 방식은 소프트웨어 개발에서 매우 중요한 부분 중 하나입니다. 이 중에서도 즉시로딩(Immediate Loading)과 지연로딩(Lazy Loading)은 주로 객체 관계 매핑(ORM) 프레임워크에서 사용되는 두 가지 주요한 데이터 로딩 방식입니다. 이번 글에서는 즉시로딩과 지연로딩의 개념과 각각의 특징, 장단점에 대해 알아보겠습니다. 즉시로딩 즉시로딩은 데이터를 조회할 때 연관된 모든 객체를 한 번에 로딩하는 방식입니다. 데이터베이스에서 주어진 쿼리에 대한 결과를 가져올 때, 연관된 모든 객체를 즉시 메모리에 올려서 사용할 수 있습니다. 장점 사용자가 객체를 사용할 때마다 쿼리를 실행할 필요가 없어서 성능이 향상됩니다. 데이터를 한 번에 로딩하기 때문에 네트워크 오버헤..
Annotation 이란? 자바 프로그래밍에서 어노테이션(Annotation)은 소스 코드에 메타데이터를 추가하는 방법을 제공합니다. 이 메타데이터는 컴파일러, 런타임 시스템 또는 다른 도구에게 특정 작업을 수행하도록 지시합니다. 자바 5부터 도입된 어노테이션은 코드의 가독성을 높이고, 개발자가 프로그램의 동작을 제어하고 문서화할 수 있는 강력한 기능으로 널리 사용됩니다. 종류 내장된 어노테이션 자바에서 기본적으로 제공하는 어노테이션으로는 @Override, @Deprecated, @SuppressWarnings 등이 있습니다. 이들은 컴파일러에게 메서드 오버라이딩, 사용하지 않는 메서드, 혹은 특정 경고 메시지를 무시하도록 지시하는 역할을 합니다. 사용자 정의 어노테이션 개발자가 직접 어노테이션을 정의..