
트랜잭션이란? 트랜잭션(Transaction) 거래 라는 의미를 가짐 데이터베이스의 상태를 변화시키기 해서 수행하는 작업의 단위 예시로 보는 계좌 이체에서의 트랜잭션 A가 B에게 10,000원을 송금한다. A의 계좌 10,000원 감소 B의 계좌 10,000원 증가 만일 A의 계좌에서 돈만 감소하고, B의 계좌에 돈이 증가되지 않는다면? → 멸망~~~ 이처럼 트랜잭션은 일련의 과정이 하나의 동작처럼 수행되어야 한다. 트랜잭션의 특징 → ACID 원자성(Atomicity) - 트랜잭션 내에서 실행된 작업은 하나처럼, 모두 성공 or 실패 일관성(Consistency) - 모든 트랜잭션은 일관성 있는 데이터베이스 상태를 유지 격리성(Isolation) - 동시에 수행되는 각 트랜잭션은 서로에게 영향을 미치지..

데브코스에서 진행한 HTTP 스터디를 마친 후 작성하는 회고입니다 왜 HTTP 스터디? 스터디 주제로 HTTP를 선정한 이유는 HTTP가 백엔드 개발자라면 알고있어야 하는 지식이기 때문입니다. 애플리케이션과 통신할 때, 서버끼리 통신할 때 모두 HTTP에 기반을 두고 있습니다. 웹 프레임워크들도 HTTP를 기반으로 구현되어 있는데, HTTP를 잘 알지 못한다면 이를 깊이있게 이해할 수 없을 것 입니다. 스터디 이전에는 스스로 HTTP에 대한 지식이 부족했다고 생각했었는데, 스터디를 진행하며 기존에 알고있는 지식이 맞는지를 확인하고 현재 사용하고 있는 웹 기술에 필요한 HTTP 지식을 습득하는 것이 이번 스터디의 목표였습니다. 스터디 방식 스터디는 9회에 걸쳐 1, 2, 3, 4, 5, 7, 11, 12,..

캐시 웹 캐시 자주 쓰이는 문서의 사본을 자동으로 보관하는 HTTP 장치 웹 요청이 캐시에 도착했을 때, 캐시된 로컬 사본이 존재하면 캐시로부터 제공된다. 장점 불필요한 데이터 전송을 줄인다. → 네트워크 요금 비용 감소 네트워크 병목을 줄여준다. 원 서버에 대한 요청을 줄여준다 → 서버의 부하를 줄임, 빠른 응답 가능 거리로 인한 지연을 줄여준다. 캐시 적중, 부적중 캐시 적중 캐시에 요청이 도착했을 때, 그에 대응하는 사본이 있다면 요청이 처리 캐시 부적중 대응하는 사본이 존재하지 않다면, 요청이 원 서버로 전달됨 캐시 재검사 캐시에 존재하는 사본이 원 서버 콘텐츠와 일치하지 않을 수있다. 일치하는지 확인하는 과정을 재검사(Revalidation)이라고 함 성공한 재검사(느린 적중) - 원 서버의 콘..

3. HTTP 메시지 메시지의 흐름 HTTP 메시지 HTTP 애플리케이션 간 주고받은 데이터의 블록 클라이언트, 서버, 프록시 사이를 흐른다. 메세지의 방향 - 인바운드, 아웃바운드, 업스트림, 다운스트림 메시지는 원 서버 방향을 인바운드로 하여 송신된다. 아웃바운드 - 트랜잭션 방향을 표현하기 위한 용어, 클라이언트로 향하는 방향 인바운드 - 트랜잭션 방향을 표현하기 위한 용어, 서버로 향하는 방향 다운스트림으로 흐르는 메세지 발송자와 수신자의 대한 것 업스트림, 다운스트림 발송자 → 수신자 형식이 다운스트림, 반대는 없다. 메시지는 항상 다운 스트림으로 흐른다. 메시지의 각 부분 메시지 구조 시작줄 - 어떤 메세지인지 서술, 아스키 문자열 헤더 - 속성, 아스키 문자열 본문 - 데이터를 포함할 수도,..

템플릿 콜백 패턴은 전략 패턴의 변형 패턴입니다. 예시 코드를 제시하며 전략 패턴 이전의 코드 -> 전략 패턴 코드 -> 템플릿 콜백 패턴 코드 의 변경점을 확인해보겠습니다. 전략 패턴 이전 코드 V1 class BeforeStrategyV1 { void someMethod1() { System.out.println("A") System.out.println("이 부분이 핵심 1 메서드"); System.out.println("C"); } void someMethod2() { System.out.println("A"); System.out.println("이 부분이 핵심 2 메서드"); System.out.println("C"); } } 해당 코드를 보면 someMethod에 공통되는 부분이 있고 그 사..

1. HTTP 개관 웹 클라이언트와 서버 웹 서버는 웹 콘텐츠를 저장하고 있다. HTTP 프로토콜로 의사소통하기 때문에 HTTP 서버라고 한다. 웹 클라이언트로부터 HTTP 요청을 받으며, HTTP 응답을 돌려보내준다. 리소스 웹 서버는 웹 리소스를 관리하고 제공한다. (웹 콘텐츠와 같은 여러 정적, 동적 콘텐츠) 미디어 타입 수천 가지의 데이터 타입이 있기 때문에 , 이를 위해 HTTP는 객체 각각에 데이터 포맷 라벨을 붙인다. MIME(Multipurpose Internet Mail Extensions) → 다목적 인터넷 메일 확장 기존에는 전자 메일 시스템 때문에 발명됨, 확장이 되어 HTTP 멀티미디어 콘텐츠에도 사용된다. MIME 타입은 / 으로 구분되어 주 타입, 부 타입으로 이루어진 문자열 ..

YAML(YAML Ain't Markup Language)은 무엇을 의미할까요? 재귀적인 유머를 가진 이 단어는 사람이 쉽게 읽을 수 있는 데이터 직렬화 양식입니다. .yml, .yaml 확장자를 가지며 들여쓰기를 통한 계층 구조를 가짐으로써 사람이 읽기 좋은, 사람이 편한 설정 파일입니다. yaml 파일과 다른 설정 파일의 비교를 통해 편리함을 강조해보자면 application.properties -> 스프링부트가 애플리케이션을 구동할 때 자동으로 로딩하는 파일 -> key - value 형식으로 값을 정의하면 애플리케이션에서 참조하여 사용 가능 environments.dev.url=https://dev.example.com environments.dev.name=Developer Setup envir..

도서관 관리 프로그램 과제에 대한 코드 리뷰를 받았는데 아래의 코드에 멘토님께서 이런 말씀을 해주셨습니다. 디미터의 법칙을 듣고 "SOLID와 같은 객체지향적인 코드를 위한 또다른 방법인가?" 라고 생각했었는데 알아보니 디미터의 법칙은 다른 객체가 어떠한 자료를 갖고 있는지 속사정을 몰라야 한다 라는 의미입니다. 이해 하기 쉽게 여러 개의 .(도트)를 사용하지 말자 라고 말하기도 합니다. 한 번 코드로 예시를 들어보겠습니다. 아래는 과제에서 사용한 Book 객체와 Repository 클래스의 findByTitleContaining 메서드입니다. @Getter public class Book { private int id; private String title; private String author; p..