[DB] ACID 원칙과 정규화: 데이터베이스 설계의 핵심 원칙
·
기술 지식 쌓아가기 📚/Backend 🍔
🚩 소개데이터베이스 설계에서 안정성과 신뢰성을 확보하기 위해 두 가지 중요한 개념인 ACID 원칙과 정규화를 이해하는 것이 필수적입니다.이 글에서는 ACID 원칙을 각 요소별로 설명하고, 정규화의 필요성과 기본 원리를 간단히 다루어 보겠습니다. ⭐ ACID 원칙ACID는 데이터베이스 트랜잭션의 4가지 주요 속성을 나타내며, 이는 데이터의 무결성과 신뢰성을 보장합니다.원자성 (Atomicity)원자성은 트랜잭션이 완전히 수행되거나 전혀 수행되지 않아야 함을 의미합니다. 즉, 트랜잭션의 모든 작업이 성공해야만 데이터베이스의 상태가 변경되고, 하나라도 실패할 경우 모든 작업이 롤백됩니다. 이를 통해 데이터 손실이나 불일치를 방지할 수 있습니다.일관성 (Consistency)일관성은 트랜잭션이 데이터베이스의 ..
[DB] 동시성 문제 해결을 위한 다양한 접근법
·
기술 지식 쌓아가기 📚/Backend 🍔
🚩 소개소프트웨어 개발에서 동시성 문제는 필수적으로 다뤄야 할 중요한 이슈입니다.특히, 여러 트랜잭션이 동시에 데이터에 접근할 때 발생할 수 있는 일관성 문제는 시스템의 안정성과 성능에 큰 영향을 미칩니다.이번 글에서는 동시성 문제의 해결 방법에 대해 정리해보겠습니다. ⭐ 동시성 문제란?동시성 문제란 여러 트랜잭션이 동시에 실행될 때 발생하는 데이터의 일관성 및 무결성 문제를 말합니다.트랜잭션이 데이터를 읽거나 수정할 때, 다른 트랜잭션이 동일한 데이터에 접근하지 못하도록 하는 것이 중요합니다.이를 위해 주로 사용되는 방법이 락(Lock)입니다.✅ 락의 종류1️⃣ 공유 락 (Shared Lock)데이터의 읽기 작업을 허용하지만, 쓰기 작업은 차단합니다.여러 트랜잭션이 동시에 데이터를 읽을 수 있지만, ..
[시스템 아키텍처] CI/CD 오케스트레이션: Docker, Jenkins, Kubernetes의 조화로운 협력
·
기술 지식 쌓아가기 📚/Backend 🍔
🚩 소개소프트웨어 개발의 속도와 품질을 높이는 데 있어 CI/CD(지속적 통합 및 지속적 배포)는 필수적인 요소입니다.CI/CD 파이프라인은 코드의 빌드, 테스트, 배포 과정을 자동화하여 개발팀이 더 자주, 신속하게 배포할 수 있도록 돕습니다.이는 사용자가 최신 기능과 버그 수정된 소프트웨어를 빠르게 이용할 수 있게 해줍니다.이번 글에서는 CI/CD 오케스트레이션의 개념과 Docker, Jenkins, Kubernetes의 역할에 대해 알아보겠습니다. ⭐ CI/CD: 연속적 통합과 연속적 배포CI/CD는 소프트웨어 개발에서 코드 변경을 자동으로 처리하는 프로세스입니다.연속적 통합은 개발자가 변경한 코드를 자주 통합하여 테스트하고, 연속적 배포는 이 코드를 신속하게 프로덕션 환경에 배포하는 것을 의미합니..
[시스템 아키텍처] 동기 vs 비동기 ➕ 블록 vs 논블록
·
기술 지식 쌓아가기 📚/Backend 🍔
⭐ 동기 (Synchronous)동기란 데이터의 요청과 결과가 동시에 이루어지는 것을 의미합니다.예를 들어, 사용자가 서버에 데이터를 요청하면, 그 요청에 대한 응답이 있을 때까지 사용자는 다른 작업을 수행할 수 없습니다.✅ 특징 즉각적인 응답 요구: 사용자가 요청을 보낸 후, 즉각적으로 응답이 돌아오기를 기대합니다.사용자 경험: 대기 시간이 길어지면 사용자 경험이 저하될 수 있습니다. 사용자는 응답을 기다리는 동안 아무것도 할 수 없기 때문에, 이 과정에서 피로감이 느껴질 수 있습니다.동기 방식은 일반적으로 간단한 요청-응답 패턴에 적합하며, 작은 데이터 전송이나 상태가 중요한 작업에서 유용합니다. ⭐ 비동기 (Asynchronous)비동기는 요청과 응답이 동시에 이루어지지 않는 것을 의미합니다.사용자..
[DB] JPA와 ORM: 데이터베이스와의 스마트한 연결
·
기술 지식 쌓아가기 📚/Backend 🍔
⭐ ORM (Object-Relational Mapping)란?ORM(Object-Relational Mapping)은 객체 지향 프로그래밍 언어에서 객체와 관계형 데이터베이스 간의 매핑을 자동으로 처리해주는 기술입니다.즉, 데이터베이스의 테이블과 프로그래밍 언어의 객체를 연결해 주는 역할을 합니다.이 기술을 사용하면 SQL 쿼리를 직접 작성하지 않고도 객체를 통해 데이터베이스와 상호작용할 수 있습니다예를들어 아래와 같은 users 테이블이 있다고 생각해봅시다.IDName1SungOne2SungTwoORM을 사용하면, 이 데이터를 아래와 같이 객체로 쉽게 표현할 수 있습니다.public class User { private Long id; private String name;}이렇게 객체로 표..
[DB] Spring에서의 데이터베이스 처리: JDBC vs JPA
·
기술 지식 쌓아가기 📚/Backend 🍔
⭐ JDBC란?JDBC(Java Database Connectivity)는 Java에서 데이터베이스에 접근하기 위한 API입니다. 즉, Java 프로그램이 데이터베이스와 소통할 수 있게 해주는 도구입니다. JDBC를 사용하면 SQL 쿼리를 직접 작성하여 데이터베이스에 접근하고, 데이터를 가져오거나 수정할 수 있습니다.import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.Statement;public class JdbcExample { public static void main(String[] args) { String url = "jdbc:mysql://localh..
[DB] 데이터베이스와의 상호작용을 쉽게 만드는 DAO 패턴 (+ DTO까지!)
·
기술 지식 쌓아가기 📚/Backend 🍔
🚩 DAO (Data Access Object) 패턴 소개소프트웨어 개발에서 데이터베이스와의 상호작용은 매우 중요합니다.그러나 데이터베이스 접근 로직이 코드에 직접 삽입되면, 유지보수와 테스트가 어려워질 수 있습니다.데이터베이스에 저장된 정보를 쉽게 관리하고 접근하기 위해, DAO (Data Access Object) 패턴이 사용됩니다.이 글에서는 DAO 패턴의 개념을 쉽게 설명하고, 실제 예시를 통해 이해를 돕겠습니다 ⭐ DAO 패턴의 개념DAO 패턴은 데이터를 저장하고 가져오는 과정에서 발생하는 복잡성을 줄여주는 설계 패턴입니다.이를 위해 다음과 같은 역할을 합니다. 추상화: 데이터베이스와의 상호작용을 단순화합니다. 비즈니스 로직(애플리케이션의 주요 기능)은 데이터가 어떻게 저장되고 가져오는지에 대..
[Framework] 웹 개발 프레임워크 비교: Spring Boot와 Node.js의 장단점
·
기술 지식 쌓아가기 📚/Backend 🍔
웹 애플리케이션을 개발할 때, 올바른 프레임워크를 선택하는 것은 매우 중요합니다.Spring Boot와 Node.js는 각각 장점과 단점이 있는 인기 있는 백엔드 프레임워크입니다. 이 글에서는 두 프레임워크의 주요 차이점과 장단점을 간단히 설명하겠습니다. ⭐ 기본 개념Spring Boot: Java 기반의 프레임워크로, 복잡한 설정 없이 신속하게 애플리케이션을 개발할 수 있게 해줍니다. Java 생태계의 강력한 기능을 이용할 수 있습니다.Node.js: JavaScript 런타임으로, 서버 측에서 JavaScript를 실행할 수 있게 해줍니다. 비동기 이벤트 기반 프로그래밍 모델로 높은 성능을 제공합니다.✅ 성능Spring Boot:장점: Java의 성능을 활용하여 복잡한 비즈니스 로직을 효율적으로 처리..
[Spring] Java Message Service (JMS) 이해하기 : 비동기 메시징 🍃
·
기술 지식 쌓아가기 📚/Backend 🍔
🚩 소개JMS(Java Message Service)는 Java 애플리케이션 간의 비동기 메시징을 지원하는 API로, 프로듀서(메시지를 보내는 쪽)와 컨슈머(메시지를 받는 쪽)가 독립적으로 작동하여 데이터를 주고받을 수 있게 합니다.비동기 방식은 요청을 보낸 후 즉시 다른 작업을 수행할 수 있어, 서버의 응답을 기다리지 않고도 시스템의 효율성을 높입니다.JMS는 메시지 전송의 신뢰성을 보장하고, 확장성과 유연성을 제공하여 분산 시스템에서도 원활한 통신이 가능하게 합니다.이러한 특성 덕분에 JMS는 복잡한 애플리케이션 간의 효과적인 데이터 흐름을 관리하는 데 중요한 역할을 합니다.Spring Framework는 JMS를 쉽게 사용할 수 있도록 지원하는 기능을 제공합니다. ⭐ JMS란?JMS(Java Me..
[Spring] REST vs SOAP: 두 웹 서비스 아키텍처의 비교 🍃
·
기술 지식 쌓아가기 📚/Backend 🍔
🚩 소개현대 웹 개발에서 API(Application Programming Interface)는 시스템 간의 상호작용을 가능하게 하는 중요한 요소입니다.이 중에서도 REST(Representational State Transfer)와 SOAP(Simple Object Access Protocol)는 주요 웹 서비스 아키텍처입니다.아마 REST는 많이 들어보셨겠지만 SOAP은 생소하실텐데요!REST(Representational State Transfer)는 주로 웹에서 데이터와 자원을 쉽게 접근하고 조작할 수 있도록 설계된 아키텍처 스타일입니다.주로 HTTP를 통해 작동하며, 간편한 URI와 다양한 데이터 형식(JSON, XML 등)을 사용하여 리소스에 접근합니다.특히 모바일 앱이나 웹 애플리케이션에서..
코양이🤍
'기술 지식 쌓아가기 📚/Backend 🍔' 카테고리의 글 목록 (2 Page)