전체 글

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