일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- mysql
- 영속성 컨텍스트
- spring batch
- 데이터베이스
- Spring Security
- 가상화
- virtualization
- CS
- 스프링 부트
- 백엔드
- JPA
- web server
- 웹 서버
- CI/CD
- 자바
- computer science
- 스프링
- 스프링 시큐리티
- Container
- Spring
- 배포
- 컨테이너
- 스프링 배치
- ORM
- Java
- 도커
- spring cloud
- spring boot
- vm
- HTTP
- Today
- Total
목록Back-End (77)
개발 일기

Java Garbage Collector(GC)는 자바에서 메모리 관리를 자동화하는 핵심 기능입니다. 수동으로 메모리를 해제해야 하는 C/C++과 달리, Java에서는 동적으로 할당했던 메모리 영역(Heap 영역) 중 GC가 더 이상 사용되지 않는 객체를 자동으로 감지하고 메모리에서 제거할 수 있다 . why? 사용이 끝난 객체가 메모리에 계속 남아있으면 메모리 누수(Leak)가 발생 → OutOfMemoryError이를 방지하고 효율적인 메모리 회수를 위해 GC가 필요함[GC 알고리즘 - Reference Counting]개념Root Space : Stack 변수와 전역 변수 등 heap 영역 참조를 담은 변수Heap영역에 선언된 객첵들이 각각 reference count라는 별도의 변수를 들고있음해당..
✅ SOLID 원칙이란?어떤 분야든, 잘하기 위해선 '원칙'이 있다.스포츠에는 기본 자세가 있고, 요리에는 레시피가 있으며, 수학에는 공리(axiom)가 존재한다. 이러한 원칙은 그 분야를 체계적이고 효율적으로 다룰 수 있게 돕는 일종의 '교범'이다. 객체지향 프로그래밍(OOP)도 마찬가지다. 유지보수하기 쉬운, 확장 가능한(유지보수성, 확장성, 재사용성) 소프트웨어를 만들기 위해서는 단순히 클래스를 나누는 것만으로는 부족하다. 객체지향 설계의 5대 원칙, SOLID가 바로 그 교범이다. 이번 글에서는 이 SOLID 원칙이 무엇이고, 왜 중요한지, 그리고 Java 코드 예시와 함께 실제로 어떻게 적용할 수 있는지를 정리해보았다.1️⃣ S - 단일 책임 원칙 (SRP, Single Responsibil..
삼성 SW 역량테스트 2022 하반기 오전 1번 문제 싸움땅을 풀면서 아래와 같은 코드를 작성했다.더보기삼성 SW 역량테스트 2022 하반기 오전 1번 문제 싸움땅import java.util.*;import java.io.*;/** * - n*n 격자에서 진행 * - 각 격자에 무기 * - 초기에 무기들이 없는 빈 격자에 플레이어들이 위치하며 각각은 초기 능력치 가짐(모두 다름) * * 숫자 * - 빨간색 배경의 숫자 = 총의 공격력 / 플레이어의 초기 능력치 * - 노란색 배경의 숫자 = 플레이어의 번호 * * Round 설명 * 아래 과정을 1번 부터 n번 플레이어까지 "순차적으로" 진행해야 한 라운드가 끝난다. * 1-1. 첫 번째 번호 플레이어 부터 본인이 향하고 있는 방향대로 한칸 이동.(..

소프트웨어 개발에서 100% 완벽한 시스템을 구축하는 것이 이상적이지만, 현실적으로는 매우 어렵다. 특히 Microservices Architecture와 같이 분산 환경에서 운영되는 서비스에서는 하나의 서버 장애가 전체 시스템으로 전파되는 문제가 발생할 수 있다.이는 단순한 장애를 넘어, MSA를 도입한 근본적인 목적 자체를 무의미하게 만들 수 있다.따라서 완벽함을 추구하기보다는, 장애 상황에서도 전체 시스템이 무너지지 않도록 유연하게 대응할 수 있는 구조, 즉 Fault Tolerance (내결함성)를 갖추는 것이 중요하다. 이는 개별 마이크로서비스에서 발생한 오류나 장애가 전체 서비스로 확산되지 않도록 방지하는 데 핵심적인 역할을 한다.이러한 내결함성을 실현하는 방법 중 하나로, Circuit Br..

→https://ai-back-end.tistory.com/119 [Java] JVM 메모리 구조(Method-Static, Heap, Stack)그전에 JVM에 대해 다시 떠올려보자. JVM 이란 Java Virtual Machine의 약자이며, 자바 가상 머신이라고 한다.자바 애플리케이션을 실행하기 위한 가상 환경자바 바이트코드(.class 파일)를 특정 운ai-back-end.tistory.com이전에 작성했던 블로그에서 단순히 JVM안에만 갇혀서 생각했다가 타 프로그램이 실행됐을때와 뭔가 다르다는걸 알게됐다.프로그램이 실행될 때 소스 코드나 실행 파일이 가상 메모리를 거쳐 RAM에 로드되고, 그 과정에서 변수들이 메모리 영역(Code, Heap, Data, Stack)에 로드된다고 했는데 Java..

드링클리 프로젝트에서 멤버 회원가입 로직을 구현하는 과정에서 두 가지 주요 작업을 처리해야 했습니다. 첫 번째는 DB에 유저 정보를 저장하는 작업, 두 번째는 팀 Slack 채널에 회원가입 요청이 들어왔고 처리되었다는 정보를 전달하는 작업입니다. 처음에는 두 작업 모두 동기 방식으로 처리했지만, Slack 처리 부분은 반드시 동기적으로 처리할 필요가 없다고 판단하게 되었습니다. 이를 통해 성능을 개선할 수 있을 것이라 생각하여, Slack 처리 부분을 비동기 처리 방식으로 변경하기로 했습니다. 이 과정에서 ApplicationEventPublisher와 같은 비동기 처리 기법을 활용해 두 방식의 성능 차이를 비교해보기로 했습니다. 1. 단순 동기 처리 방식위 코드에서처럼 처음에는 회원가입 로직을 동기 ..

드링클리 프로젝트에서 모놀리틱에서 마이크로서비스로 전환하게 되면서 한 가지 의문이 발생했었습니다.기존 모놀리식 시스템에서는 단일 데이터베이스 내에서 모든 작업이 하나의 트랜잭션으로 묶여 원자성이 보장되었지만, 마이크로서비스 환경에서는 각 서비스가 독립적으로 트랜잭션을 가져가기 때문에 원자성이 깨졌고 해왔던것 처럼 처리했을때 데이터의 일관성까지 깨질 수 있겠다는 생각이 들었다.그래서 Orchestration Saga Pattern을 적용했었는데 해당 세미나가 너무 도움 됐어서 한번 다시 정리해보기로 했다. 토스ㅣSLASH 24 - 보상 트랜잭션으로 분산 환경에서도 안전하게 환전하기분산 트랜잭션이 필요한 이유?해당 예시에서 상황은 기존 Corebanking 시스템은 하나의 데이터베이스를 바라보고 있는 모놀리..

드링클리 프로젝트에서 MSA로 전환하면서 서버 간 통신을 할때 Feign으로도 다 처리가능한데 왜 다들 메시지큐 Kafka 비동기 처리에 목숨을 거는건지 잘 이해가 되지 않아 정리하게 됐다.회원시스템 이벤트기반 아키텍처우선 Micro-Service Architecture 왜 필요한가?마이크로서비스는 애플리케이션을 느슨하게 결합된 서비스의 모임으로 구조화하는 서비스 자향 아키텍처(SOA) 스타일의 일종인 소프트웨어 개발 기법이다.이때 마이크로서비스 얘기가 나오면 Event-Driven Architecture가 나오는 이유 또한 이 이벤트 기반 아키텍처가 느슨한 결합을 돕기 때문이다. 왜 느슨한 결합이 필요한데?정보처리기사나 Software Engineering과목을 수강하면서 수도 없이 들은 Coupli..