데이터베이스는 항상 데이터의 일관성과 무결성이 보장되어야한다. 하지만 동시에 많은 세션이 DB에 접근한다면 이런 일관성과 무결성이 깨지느 동시성 문제가 발생할 수 있다.예를 들어 고객 2명이 상품이 구매하는 경우를 가정해보자.그러면 고객 1과 고객 2 모두 상품의 재고
데이터베이스의 상태를 변화시키기 위해 수행하는 작업의 최소 단위즉, 데이터베이스에 여러 개의 작업(INSERT, UPDATE, DELETE 등)을 묶어서 모두 성공하면 반영하고, 하나라도 실패하면 전부 취소하는 것을 의미합위와 같이 상품을 주문한 뒤 상품 재고를 차감하
TCP는 데이터를 안전하게 전송하기 위한 전송 계층 프로토콜입니다.HTTP, FTP, 이메일 등 신뢰성이 중요한 상황에서 주로 사용됩니다.TCP의 주요 특성:연결지향적 프로토콜데이터를 주고받기 전 송신자와 수신자 간 연결을 수립한 후 데이터를 전송합니다.연결을 위해서는
OSI 7 계층은 네트워크 통신과정에서 일어나는 일을 7가지 단계로 나눈 것을 말합니다.통신과정에서 일어나는 일을 단계별로 알 수 있으며, 특정한 곳에 이상이 발생하면 해당 단계만 수정하면 되기 때문입니다.예를 들어, 회사 내 모든 컴퓨터에서 문제가 발생한 경우 →
앞서 AOP를 사용한 로그 관리를 살펴보았다. 하지만 본인이 느끼기에 몇가지 문제가 있었다. 그래서 이번에는 AOP가 아닌 Filter를 활용하여 Spring boot에서 로그 관리를 해볼려고 한다. 1. 필터 구현 우선 본인은 아래와 같이 LogFilter를 구현했
앞서 로그를 관리하기 위한 여러가지 도구들을 살펴보았고 결과적으로 Logback을 사용하기로 하였다.Logback을 통한 로그 설정이번에는 실제로 클라이언트가 서버로 API를 호출했을 때 어떻게 요청과 응답을 로깅할 수 있는지를 작성해볼려고 한다. 로깅은 보통 AOP,
조간만 지금까지 만들어왔던 학점가방 서비스를 배포할 예정이다.배포 준비를 하면서 보안적인 부분을 하니씩 점검하고 있다. 해당 서비스는 Swagger를 사용해서 개발하고 있으며 API문서를 관리하기 위해 Swagger를 사용했다. 하지만 실제로 배포를 할려고 하니 운영서

Firebase Cloud Messaging(FCM)은 무료로 메시지를 안정적으로 전송할 수 있는 크로스 플랫폼 메시징 솔루션이다. 쉽게 이야기하면 서버에서 클라이언트로 메시지를 전달할 수 있는 서비스라고 생각하면 된다. 💡 교차 플랫폼(Cross-Platform)하

요즘 학점가방 서비스를 제작하면서 바쁜 나날을 보내고 있다.해당 서비스에는 학교 과제를 관리하는 기능이 있으며 팀장으로부터 과제 마감 전 푸시 알림을 전송하는 기능을 구현해달라는 부탁을 받았다.처음에는 단순히 FCM으로 구현해야지 생각했다가 다른 방식도 있지 않을까라는
개인적으로 팀원들과 함께 개발하고 있는 학점가방 서비스를 조만간 배포할 예정이다. 그리고 배포 전에 문득 운영서버가 얼마나 많은 트래픽을 감당할 수 있을지 의문이 들었다. 이러한 의문을 해결하기 위해 부하테스트에 대해 공부하고 기록을 남기고자 한다. 부하테스트란? 부

현재 학점가방이라는 앱 서비스를 제작 중이며 나는 스프링 부트로 백엔드 개발을 맡고 있다. 지금까지 프론트엔드 개발자들이 API 연결과정에서 로그를 확인해야 할 때 직접 서버에 접속하여 docker logs 명령을 통해 콘솔로만 확인해왔다. 하지만 이 방식은 다음과 같

그래서 오랜만에 플러터를 설치하고 실행하니 다음과 같은 오류가 발생하였다. Your project's Gradle version is incompatible with the Java version that Flutter is using for Gradle. 해당 오류를
Spring과 Spring Boot는 둘 다 Java 기반의 애플리케이션을 개발할 때 사용하는 프레임워크지만, 목적과 편의성 면에서 차이가 있습니다.Spring은 Java 기반 애플리케이션을 개발하기 위한 오픈소스 프레임워크입니다. 의존성 주입(DI), AOP(Aspe

스프링은 스프링 컨테이너를 이용하여 자바 객체의 생명주기를 관리합니다.스프링은 스프링 컨테이너로서 BeanFactory 라는 인터페이스르 제공하며 해당 인터페이스는 Bean을 관리하고 검색하는 기능을 제공합니다.ApplicationContext는 BeanFactory

이전 포스팅에서 스프링이 뭔지에 대해 간단하게 알아보았습니다. 그래서 이번에는 스프링의 핵심 아키텍쳐인 스프링 컨테이너에 대해 알아보고자 합니다. 그전에 몇가지 집고 넘어가야 할 개념들이 있어 빠르게 한번 알아보겠습니다. IoC(Inverse of Control) >

스프링이란 무엇일까요? 해당 의문에 대해 정답을 찾기위해 일부 블로그를 찾아보았고 저에게 가장 와닿는 정의는 다음과 같았습니다. > **엔터프라이즈용 Java 애플리케이션 개발을 위한 오픈소스 경량 애플리케이션 프레임워크**
우리가 키보드, 마우스같은 단말기를 통해 어떠한 데이터(문자, 파일)를 입력하게 되면 컴퓨터는 프로그램을 통해 그에 알맞는 데이터를 출력시켜준다.이러한 상황에서 사용되는 것이 표준스트림이다.표준스트림의 사전적 정의는 아래와 같다(출처 - 위키피디아)표준스트림(stand
보수란 각 자리의 숫자의 합이 어느 일정한 수가 되게 하는 수를 의미한다.여기서 말하는 일정한 수가 10이라면 4에 대한 10의 보수는 6이 되고 2에 대한 10의 보수는 8이 된다R진법에 대한 보수는 R-1의 보수와 R의 보수로 구분할 수 있다.R-1의 보수를 구하는