[시스템 아키텍처] Observability Support: 시스템 모니터링의 새로운 패러다임
·
기술 지식 쌓아가기 📚/Backend 🍔
🚩 소개현대의 복잡한 시스템 아키텍처에서 애플리케이션과 인프라의 상태를 파악하는 것은 필수적입니다.이때 Observability(관찰 가능성)는 시스템의 내부 상태를 이해하고 문제를 진단하는 데 중요한 역할을 합니다.Observability Support는 이러한 과정을 더욱 효율적으로 만들어주는 도구와 프로세스를 의미합니다. ⭐ Observability란?Observability는 시스템의 내부 동작을 외부에서 관찰할 수 있는 능력을 말합니다.이는 주로 로그, 메트릭, 트레이스와 같은 데이터의 수집과 분석을 통해 이루어집니다.좋은 Observability는 문제를 빠르게 진단하고, 시스템의 성능을 최적화하며, 사용자 경험을 향상시킬 수 있게 해줍니다. ⭐ Observability Support의 중요..
[백준] 10814 나이순 정렬 | 정렬 | 실버 Ⅴ | JAVA
·
코딩 테스트 일지 📒
📌 문제https://www.acmicpc.net/problem/10814 ⏹ 정답 코드import java.io.*;import java.util.*;public class Main{ public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); StringBuilder sb = new StringBuilder(); StringTokenizer st; ..
[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는 소프트웨어 개발에서 코드 변경을 자동으로 처리하는 프로세스입니다.연속적 통합은 개발자가 변경한 코드를 자주 통합하여 테스트하고, 연속적 배포는 이 코드를 신속하게 프로덕션 환경에 배포하는 것을 의미합니..
[프로그래머스] 여행 경로 | DFS, BFS | Level.3 | JAVA
·
코딩 테스트 일지 📒
📌 문제https://school.programmers.co.kr/learn/courses/30/lessons/43164 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr  ⭐ 알고리즘 선정 : DFS? or BFS?이 문제는 DFS(Depth-First Search)로 해결하는 것이 적합합니다. 그 이유는 다음과 같습니다:문제의 특징모든 항공권을 사용해야 한다: 주어진 항공권을 모두 이용하여 경로를 구성해야 하므로, 가능한 모든 경로를 탐색해야 합니다.경로의 알파벳 순서: 여러 경로 중 알파벳 순서가 가장 앞서는 경로를 선택해야 하므로, 깊이 탐색하면서 정렬..
[시스템 아키텍처] 컨테이너화: 현대 소프트웨어 배포의 혁신
·
코딩 테스트 일지 📒
최근 소프트웨어 개발 분야에서 "컨테이너화"라는 용어가 자주 등장하고 있습니다. 그럼 과연 컨테이너화란 무엇이며, 어떤 이점이 있는지 살펴보도록 하겠습니다. ⭐ 컨테이너화란?컨테이너화는 애플리케이션의 코드와 필요한 모든 파일 및 라이브러리를 하나의 패키지로 묶어 여러 환경에서 실행할 수 있도록 하는 소프트웨어 배포 방법입니다.전통적으로 애플리케이션을 실행하기 위해서는 각 운영 체제에 맞는 버전을 별도로 설치해야 했지만, 컨테이너화를 통해 모든 운영 체제에서 동일한 컨테이너를 실행할 수 있습니다. ⭐ 컨테이너화의 이점컨테이너화를 통해 소프트웨어 개발자들은 다음과 같은 여러 가지 이점을 누릴 수 있습니다:1. 이동성컨테이너화를 활용하면 개발자는 애플리케이션 코드를 다시 작성할 필요 없이 여러 환경에 쉽게 배..
[백준] 1260 DFS와 BFS | 그래프, DFS, BFS | 실버 Ⅱ | JAVA 💡뼈대 문제
·
코딩 테스트 일지 📒
📌 문제https://www.acmicpc.net/problem/1260 ⭐ 정답코드import java.io.*;import java.util.*;public class Main{ static boolean[][] a; static boolean[] visited; static StringBuilder sb = new StringBuilder(); static int n; static Queue q = new LinkedList(); public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); Buff..
[백준]1697 숨바꼭질 | 그래프, BFS | 실버 Ⅰ | JAVA
·
코딩 테스트 일지 📒
📌 문제https://www.acmicpc.net/problem/1697 ✅ 정답 코드import java.io.*;import java.util.*;public class Main{ public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()); int a = Integer.parseInt(st.nextToken()); int b = Integer..
[알고리즘] DFS와 BFS
·
코딩 테스트 일지 📒
⭐ DFS (깊이 우선 탐색)DFS(Depth-First Search)는 시작 노드에서 깊이 들어가 최대한 멀리 가다가 더 이상 갈 수 없게 되면, 이전 노드로 돌아와서 다른 경로를 탐색하는 알고리즘입니다.이 과정에서 스택(Stack)을 사용하거나 재귀 호출을 통해 구현됩니다.DFS는 LIFO(후입선출) 방식으로 작동하여, 나중에 들어간 노드가 먼저 나오게 됩니다.주로 경로 탐색, 모든 경우의 수 탐색 등에 사용됩니다.✅ 구현 방법1️⃣ 스택스택을 이용한 DFS 구현은 다음과 같이 할 수 있습니다. 노드를 방문할 때마다 스택에 추가하고, 더 이상 갈 수 없는 경우에는 스택에서 팝(pop)하여 이전 노드로 돌아갑니다.import java.util.*;public class DFSStack { priv..
코양이🤍
'분류 전체보기' 카테고리의 글 목록