본문 바로가기

전체 글56

[Database] 트랜잭션과 격리 수준(Transaction And Isolation level) 0. 이 글을 쓰게 된 이유 평소에 db에 대한 지식이 부족하다는 생각을 해서 공부를 하던 도중 db의 기본 중의 기본인 트랜잭션 격리성 수준에 대해서 정리하고자 이 글을 쓰게 되었다. 1. 트랜잭션과 격리 수준이란? 1.1 트랜잭션의 ACID 트랜잭션은 ACID라 하는 원자성(Atomicity), 일관성(Consistency), 격리성(isolation), 지속성(Durability)를 보장해야한다. 원자성 : 트랜잭션 내에서 실행한 작업들은 하나의 작업처럼 처리되어 모두 성공하거나 모두 실패해야 한다. 일관성 : 모든 트랜잭션은 일관성 있는 데이터베이스 상태를 유지해야 한다. 예를 들어 데이터베이스에서 정한 무결성 제약 조건을 항상 만족해야한다. 격리성 : 동시에 실행되는 트랜잭션들이 서로에게 영향을.. 2023. 1. 3.
[후기] 우아한 테크코스 5기 합격 후기 0. 이 글을 쓰게 된 이유 얼마 전에 우아한 테크코스 5기 최종 발표가 있었고 다행히 최종 합격이라는 결과를 얻었다! 우테코를 준비하며 내가 배운 점에 대해서 기록해놓고자 이 글을 쓰게 되었다. 1. 선발 과정 우아한 테크코스 5기는 지원(자기 소개서 작성) -> 프리코스 -> 최종 코딩 테스트 순으로 진행되었다. 다른 기수들과는 다르게 프리코스 전에 코딩 테스트가 없어졌는데, 그 이유는 다양한 사람들에게 프리코스를 경험 시키자는 취지라고 한다. 1.1 지원 단계 일단 지원 단계에서는 우아한 테크코스 지원 플렛폼에 나와있는 질문에 대한 답변을 작성해야한다. 이때 상당히 많이 고민 했었다. 내 답변이 너무 흔하지 않을까, 기준에 안 맞는 답변이 아닐까 등 온갖 생각을 했었다. 하지만 결국 이 단계는 내가.. 2023. 1. 1.
[CS] Web Socket 0. 이 글을 쓰게 된 이유 프로젝트를 진행하며 실시간 채팅 서버를 구축해야하는 요구 사항이 있었다. 그 과정에서 공부한 Web Socket에 대한 지식을 기록하고자 이 글을 쓰게 되었다. 1. HTTP 프로토콜의 한계 웹이 만들어진 초기에는 단순히 사용자가 리소스를 요청하면 응답하여서 보여주기만 하면 되었다. 그래서 HTTP 프로토콜은 요청을 보내면 응답을 받는 Request/Response 구조로 설계 되었고 이는 아주 짧은 시간 동안만 socket connection을 맺고 요청에 따른 응답을 보내주면 바로 끊어지게 된다. 즉, HTTP 프로토콜은 요청을 보내야 응답을 받는 단방향 통신(Simplex Communication) 방식이고(polling 같은 기술은 반이중방식), 이는 서버 쪽에서 아무.. 2022. 12. 13.
[후기] 토비의 스프링 3.1 Vol.1 후기 0. 이 글을 쓰게 된 이유 토비의 스프링 vol.1의 정독을 완료하였다. 사실 3달 전에 완독을 했지만 부족한 부분을 다시 읽고, 후기를 미루고 미루다가 지금 쓰게 되었다. 개인적으로 스프링과 객체 지향을 이해함에 있어 큰 도움이 되었기 때문에 이 글을 쓰고 싶었다. 1. 스프링을 사용하는 이유 백엔드 웹개발에서 스프링은 가장 많이 쓰는 프레임 워크 중 하나이다. 우리나라에서는 대부분의 기업에서 스프링을 사용하고, 전자 정부 표준 프레임 워크이다. 사실 내가 스프링을 공부하게 된 것도 이러한 이유에서이다. 하지만 이것만으로는 충분하지 않다. 물론 많은 개발자들이 사용하니 그만큼 자료도 많은 장점이 있긴 하지만 그게 스프링을 사용하는 직접적인 이유가 될 수 없다. 토비의 스프링을 읽으며 내가 이해한 스프.. 2022. 12. 5.
[CS] Web Server와 WAS 0. 이 글을 쓰게 된 이유 Web Server와 WAS에 대한 개념은 서버 개발에 있어서 기초적인 개념이다. 팀 프로젝트에 들어가기 앞서 정확하게 정리하고 싶어서 이 글을 쓰게 되었다. 1. 정적 페이지와 동적 페이지 1.1 정적 페이지(Static Contents) 정적 페이지는 말 그대로 변화가 없는 정적인 컨텐츠 말한다. image, html, css, javsscript등이 이에 속하며 즉시 웹 브라우저에서 사용할 수 있는 컨텐츠이다. 1.2 동적 페이지(Dynamic Contents) 동적 페이지는 정적 컨텐츠와는 반대 개념으로, 인자의 내용에 맞게 바뀌는 동적인 컨텐츠이다. 보통 DB 서버와 연결되어 같이 수행이 되며 업무를 처리하는 비즈니스 로직이 수행된 결과물이다. 2. Web Serve.. 2022. 12. 5.
[Spring] @Valid, @Validated 동작 원리 0. 이 글을 쓰게 된 이유 개발을 할 때, 데이터의 유효성 검증은 굉장히 중요하고 애플리케이션 전체에서 발생한다. 클라이언트에서 넘어온 데이터가 유효한지, 서비스 레이어에서 파라미터 값이 제대로 된 값인지 등 여러 곳에서 데이터 검증은 필수다. 하지만 유효성 검증에는 이런 특징이 있는 만큼 문제점이 존재한다. 문제점 애플리케이션 전체에 분산되어 있다. 코드 중복이 심하다. 비즈니스 로직에 섞여있어 복잡하다. 이러한 문제점들 때문에 유효성 검증은 유지/보수가 어렵다. 해결책 Java에서도 이러한 문제를 알고 Bean Validation이라는 유효성 검증 프레임워크를 제공하고 있다(JSR-303 표준 스펙). Bean Validation 프레임 워크는 위에서 말한 문제들을 해결하기 위해 다양한 제약을 모델.. 2022. 10. 20.