[백엔드 기초] Redis 기초 개념 정리
·
Spring/백엔드 기초
어떤 상황에서 RDBMS를 사용하고, 어떤 상황에서 NoSQL인 Redis를 섞어 써야 프로젝트의 성능이 최적화되는지에 대한 기준을 잡는 과정으로 Redis 기초 개념을 정리하고자 한다. 메모리(RAM) 연산이 디스크 연산보다 빠른 이유1. 디스크가 아닌 RAM을 사용 (In-Memory Architecture): Redis는 SSD나 HDD가 아닌 RAM(Memory)을 주 저장소로 사용일반 데이터베이스 (Disk-based) : 데이터가 SSD나 HDD에 저장됩니다. 데이터를 읽으려면 디스크 I/O가 발생하며, 물리적인 탐색 시간이 필요하다.Redis (RAM-based) : 모든 데이터가 RAM에 올라가 있고, 디스크 I/O 없이 CPU가 메모리에 곧바로 접근, 이는 곧 메모리 반도체에 전기가 통하..
[프로젝트] 실시간 데이터 처리 회고
·
Spring/Spring 실습
❤️‍🔥 과제 목표실시간 데이터 처리를 위한 아키텍처 설계 흐름을 복습Kafka + WebSockect(STOMP) 기반의 실시간 메시징 구조를 직접 구현해본다DB 설계를 통해 메시지/이벤트 기반 데이터 모델링 능력을 강화한다.☠️ 트러블 슈팅발생한 Issue 1. 이전 과제 및 프로젝트 진행 간 @Transactional을 어디에, 무엇을 써야 하는가?2. 엔티티가 아닌 DTO 중심으로 실시간 메시지/응답을 어떻게 설계하면 좋은가?3. 투표 수 집계 과정을 구현하면서 기존 엔티티에 별도로 컬럼값으로 매칭을 시켜주지 않아도 구현이 가능한가?해결방법 / 찾아본 내용1. 이전에 정리했던 Transactional의 개념처럼 DB의 수정이 일어나는 구간에서의 안정적인 변경과정을 위한 @Transactional..
[개념정리] WebSocket 과 STOMP
·
Spring/백엔드 기초
이번 강의주차에서는 실시간 데이터 처리에 대한 내용을 다루다 보니 그에 필요한 WebSocket과 STOMP 의 개념 및 동작 방식 등을 알아갈 필요가 생겼다. WebSocket이란 ? : 서버와 클라이언트가 한 번 연결되면 끊지 않고 양방향으로 자유롭게 데이터를 주고받을 수 있는 프로토콜 웹소켓의 통신구조: 클라이언트 → 서버로의 요청이 아니라, 클라이언트의 요청없이도 서버 → 클라이언트로 정보를 실시간으로 보낼 수 있다는 것 양방향 통신 구조에서는 HTTP 통신을 할 수 없기 때문에 별도의 프로토콜을 사용하게 되는데, http:// 가 아닌 ws://의 url을 가진 웹소켓 프로토콜을 사용하며 명시적으로는 해당 프로토콜을 사용하지는 않지만 내부적으로 사용하게 된다. 👉 양방향 통신 파헤쳐보기1...
[프로젝트] 포인트 기반 결제 시스템 프로젝트 회고
·
Spring/Spring 실습
프로젝트 진행 목적 요약하기 💡개인 과제로 진행했던 결제 시스템 기반의 프로젝트를 고도화하고 구독 기반의 복합 결제 시스템으로 발전 시키는 과정을 팀 프로젝트로 진행하게 되었다.고도화에 필요한 ERD 설계부터 비즈니스 로직 플로우차트를 그리고, 백엔드에서 이뤄져야할 과정들의 흐름을 이해하고 넘어가고자 했다. ☠️ 트러블 슈팅 1. 비즈니스 로직 설계 단계에서의 애로사항포트원 기반의 API 연동과정에 대한 이해도 부족 2. 설계되어있는 프로젝트의 리팩토링 접근3. Mono는 어떻게 사용해야 하는가?💡 접근 및 해결방안1. 엔티티간의 연관관계와 필요 요소들에 대해서 정리가 필요했다.검증에 대한 분기점 설정은 언제가 적합한가?외부 API(포트원) 기반의 실 결제 내역 및 추출할 수 있는 요소는 어떤 부분..
[백엔드 기초] 데이터베이스 기초
·
Spring/백엔드 기초
💡 오늘의 학습목표데이터베이스 기초 중 세가지에 대해서 정리해 나아갈 예정이다.RDBMS스키마 설계트랜잭션과 락RDBMS란?: RDB(Relational Database - 관계형 데티어베이스)는 데이터를 테이블 형태로 저장하고, 이 테이블들 간의 관계를 기반으로 데이터를 관리할 수 있는 저장공간 → RDBMS(Relational Database Management System - 관계형 데이터베이스 관리 시스템)을 통해 데이터베이스를 관리하고 구조화된 쿼리 언어(Structured Query Language, SQL)를 사용하여 데이터를 CRUD 작업 등을 수행할 수 있다. 1. RDB의 기능 기능설명데이터 정의(Data Definition)데이터의 논리적, 물리적 구조를 정의하고 데이터간 관계와 연..
[백엔드 기초] CI / CD
·
Spring/백엔드 기초
💡 오늘의 학습목표1. CI/CD 와 DevOps문화에 대해 이해하고 구축할 수 있다.2. AWS CodePipeline 생성 및 실행하고, AWS CodeDeploy 생성할 수 있다.3. CI/CD를 이용하여 자동 배포를 진행할 수 있다.CI/CD: 지속적 통합(CI - Continuous Integration)과 지속적 배포 (CD -Continuous Deployment)는 개발자들이 작업한 코드를 지속적으로 통합하고 Production으로 배포하는 프로세스까지 자동화하는 것을 의미하는 용어즉, 개발자가 개발한 소프트웨어를 빠르고 안정적으로 배포하는 절차를 자동화하기 위한 개념 이러한 배포 자동화 작업에 대한 문화적, 철학적 접근법과 기술적 관행으로 DevOps가 있다. DevOps: Softwa..