전체 글 44

[Spring] DI : Dependency Injection

DI로 하는 일은 프로그램의 부분적인 전환을 쉽게 만드는 것객체 간의 의존 관계를 스프링 컨테이너가 관리해주는 디자인 패턴.객체가 직접 필요로 하는 의존 객체를 생성하거나 관리하는 것이 아니라, 외부에서 필요한 객체를 주입받아 사용하는 방식 DI의 D는 의존을 의미하며, I는 주입을 의미한다.   예)주문 서비스가 있을 때, 주문 서비스는 결제 서비스에 의존적일 수 있다. 이 때 DI를 사용하면 주문 서비스는 직접 결제 서비스를 생성하거나 관리하지 않고, 외부에서 주입받아 사용한다.  public class OrderService { private PaymentService paymentService; // 생성자를 통한 주입 (Constructor Injection) public Ord..

Backend · Infra 2024.07.15

[Java] 추상 클래스와 인터페이스의 차이

추상클래스와 인터페이스는 모두 추상화를 통해 다형성을 구현하는 방법을 제공하지만각각의 특징에 따른 차이점이 존재한다. 여기서 다형성이란,객체에 여러가지 타입을 대입할 수 있다는 것을 의미한다. ↔ 단형성은 하나의 객체에 하나의 타입만 대응 가능하다.추상 클래스 Abstract Classabstract class Animal { String name; Animal(String name) { this.name = name; } abstract void makeSound(); // 추상 메서드 void eat() { System.out.println(name + " is eating."); // 일반 메서드 }} abstract 키워드를 사용하여 정의한..

Backend · Infra 2024.07.12

Error 와 Exception

Error와  Exception은 둘 다 프로그램 실행 중 발생할 수 있는 문제를 나타내지만,그 의미와 처리는 다르다.   Error보통 JVM(Java Virtual Machine) 수준에서 발생하는 심각한 문제로, 애플리케이션 코드에서 직접 처리하기 어려운 경우가 많다.  OutOfMemoryErrorJVM에 메모리가 부족할 때 발생 StackOverflowError너무 많은 메서드 호출로 인해 호출 스택이 오버플로우될 때 발생 NoClassDefFoundEerror필요한 클래스를 찾을 수 없을 때 발생 원인 시스템 레벨에서 발생하는 문제, 메모리 부족, 스택 오버플로우 등과 같은 문제로 인해 발생하게 된다. 처리 Error는 프로그램이 정상적으로 계속 실행되기 어려운 상황이기 때문에 일반적으로 이런..

Backend · Infra 2024.07.11

[ElasticSearch] nested Type

ElasticSearch에서 nested 타입은 중첩된 문서 구조를 지원하는 방법이다.일반적인 Object가 아닌 중첩된 객체 배열을 색인하고 검색하는 데 사용된다. 예제{ "title": "Book", "authors": [ { "name": "Author A", "age": 30 }, { "name": "Author B", "age": 35 } ]} authors 필드는 중첩된 객체 배열이다. 각 author은 name 과 age를 가지고 있다. 위 데이터를 ES에 인덱싱하기 위해 매핑을 설정한다.PUT /books{ "mappings": { "properties": { "title": { "type": "text" }, ..

Backend · Infra 2024.07.10

[ElasticSearch] Query

ElasticSearch강력한 검색 및 분석 기능을 제공하는 분산 검색 엔진데이터를 검색하기 위해 JSON 기반의 쿼리를 사용한다.Query DSL(Domain Specific Language) 가 사용 된다. Logstash과 Beats는 데이터를 수집, 집계 및 풍부화 하고 ElasticSearch에 저장하는 것을 용이하게 함.Kibana를 사용하면 대화형으로 데이터 탐색, 시각화, 스택관리, 공유, 모니터링 할 수 있다.ElasticSearch 는 모든 유형의 데이터에 대한 실시간 검색 및 분석을 제공한다.구조화하거나 구조화되지 않은 텍스트, 숫자, 지리공간 등 빠른 검색을 지원하는 방식으로 저장하고 인덱싱할 수 있음._Search API1. 정확한 값 검색숫자,날짜, IP, 문자열 등의 정확한 값..

Backend · Infra 2024.07.09

싱글톤 패턴 Singleton Pattern

소프트웨어 디자인 패턴 중 하나로, 특정 클래스의 인스턴스가 오직 하나만 생성되도록 보장하는 패턴.전역적으로 접근 가능한 유일한 객체를 제공하며, 주로 설정 클래스나 로깅 클래스 등에서 사용된다. 주요 목적시스템 내에서 해당 클래스의 인스턴스가 한 번만 생성되고, 동일한 인스턴스가 여러 곳에서 사용될 수 있도록 하는 것  싱글턴 패턴의 주요 특징1. 유일한 인스턴스 보장   클래스의 인스턴스가 하나만 존재하도록 보장한다.2. 전역 접근   생성된 인스턴스에 전역적으로 접근할 수 있도록 한다.3. 메모리 절약   하나의 인스턴스만 생성되기 때문에 메모리 낭비를 줄일 수 있다.4. 인스턴스 수명 관리   인스턴스가 언제 생성되고, 파괴될지 제어 할 수 있다. class Singleton: _instance ..

Backend · Infra 2024.07.09

MSA (Microservice Architecture)

마이크로서비스 아키텍처는 소프트웨어 시스템을 작고 독립적인 서비스들로 분리하여 개발하고 배포하는 아키텍처 스타일 입니다.기존 모노리틱 아키텍처와 달리, MSA는 각 서비스가 특정 비즈니스 기능을 담당하여 독립적으로 실행될 수 있도록 설계되었습니다.독립적인 서비스각 서비스는 자체적 데이터베이스와 통신 인터페이스를 가짐특정 비즈니스 기능을 수행함서비스 간의 결합도를 낮춤개발과 배포의 독립성을 높임분산형 데이터 관리독립적 DB를 가지기 때문에, 데이터 관리는 분산되어 있음서비스 간 일관성 유지를 신경 써야 하지만, 해결하기 위한 패턴과 도구들이 발전하고 있음경량화된 통신 프로토콜서비스 간 통신은 주로 HTTP RESTful API를 통하여 이루어짐서비스 간 유연하고 간단한 통신을 가능하게 함개별적 배포 & 확..

Backend · Infra 2024.07.03

RESTful API 개요

RESTful API란?RESTful API는 REST(Representational State Transfer) 원칙을 따르는 웹 API를 의미합니다. 이는 두 컴퓨터 시스템이 인터넷을 통해 정보를 안전하게 교환하기 위한 인터페이스로 활용됩니다.REST의 핵심 개념REST는 API 설계 및 작동 방식에 대한 일련의 원칙을 정의하는 소프트웨어 아키텍처 스타일입니다. 주로 HTTP 프로토콜을 기반으로 하며, 클라이언트와 서버 간 상호작용을 단순화하고, 자원의 표현 방식을 규정합니다.REST의 주요 원칙1. 자원(Resource)모든 자원은 고유한 식별자(URI)를 가짐URI를 통해 자원을 식별하고 상호작용 가능2. 표현(Representation)자원은 JSON, XML 등 다양한 표현 방식으로 제공 가능..

Computer Science 2024.07.03

정규 표현식(Regex) 완벽 가이드

1. 정규 표현식(Regex)이란?정규 표현식(Regular Expression, Regex)은 특정한 문자열 패턴을 검색, 매칭, 변환하는 데 사용되는 도구입니다.프로그래밍에서 텍스트 데이터를 다룰 때, 효율적으로 문자열을 찾고 조작할 수 있도록 도와줍니다.  ✅ 어디에 사용될까?🖤 회원가입 시 이메일 & 패스워드 유효성 검사🖤 로그 파일에서 특정 패턴(예: 에러 로그)만 필터링 🖤 데이터 크롤링 시 원하는 문자열 추출 보안 제품 개발 실무에서도 많이 활용 되고 있습니다2. 정규 표현식 기본 문법기호의미예제.아무 문자 1개a.c → "abc", "aac" 매칭^문자열의 시작^Hello → "Hello world" 매칭$문자열의 끝world$ → "Hello world" 매칭*앞 문자가 0개 이상 ..

TIL · 잡담 2024.07.01

크래프톤 정글 수료 후기

크래프톤 정글크래프톤 정글은 주 100시간 공부를 목표로 하며, 합숙하며 팀별 자율학습을 진행하는 SW 부트캠프이다. 컴퓨터 공학 기본 지식 및 알고리즘에 대해 주로 학습하게 된다. 마지막으로 나만의 무기 만들기 주 때는 5명의 팀을 꾸려서 완성도 있는 웹 프로젝트를 기획, 개발, 배포 한 후 발표한다. 그 후 취업 특강을 통해서 취업을 지원하고, 협력사에도 지원할 수 있는 기회가 주어진다.  입소전 나의 상황 미대 출신 비전공자로 2020년 웹개발 학원과 빅데이터 학원을 다녀서 공부해서 백엔드 개발자로 취업했었고,회사에서는 Java Spring Boot를 주로 사용했었는데, 기본적으로 기능 구현은 할 수 있었지만 깊게 공부할 수록 컴퓨터공학 기초 지식이 없어서 성장에 있어 어려움이 있었다.  그러던 중..

회고 2024.06.27