프로그래밍 언어/Spring
-
인메모리 저장소와 Redis에 대해 파헤치기프로그래밍 언어/Spring 2024. 8. 8. 19:04
이 글은 인메모리 저장소와 Redis에 대한 공부를 제가 이해할 수 있는 내용으로 정리한 글입니다. 부정확한 서술이나 기술에 대한 정보가 틀릴 가능성이 있습니다. 인메모리 저장소의 필요성우리는 지금까지 Spring boot를 활용하면서 데이터를 쉽게 저장할 수 있도록 관계형 데이터베이스(RDBMS)를 사용해왔습니다. 이 데이터베이스를 사용했던 가장 큰 목적은 서비스가 종료돼도 데이터를 영속적으로 남기기 위해서입니다. 하지만, 서비스를 운용하다보면 데이터베이스에 저장하는 것보다 임시 저장해야하는 상황들이 있습니다.예를 들어, 우리가 쇼핑몰을 이용할 때 이용하는 장바구니 기능은 확정되지 않은 데이터로써 상품들을 쉽게쉽게 바뀌고 삭제됩니다. 이런 상황에서 관계형 데이터베이스에 계속해서 SQL문을 날려 저장하..
-
분산 추적에 대해 파헤치기프로그래밍 언어/Spring 2024. 8. 7. 19:38
이 글은 필자가 공부한 내용을 정리한 것에 불과하며 틀린 정보가 있을 수 있으니 주의가 필요합니다. 오늘은 분산 추적에 대해 알아보겠습니다. 주제에 들어가기 앞서, Spring Cloud(MSA를 구현하기 위해 Spring에서 지원하는 프레임워크의 확장)는 분산 추적과 로깅을 설정할 수 있도록 설계되었습니다. 그만큼 MSA 구현에 있어 분산 추적과 로깅이 중요한 위치에 있다는 뜻인데, 이는 왜 중요한 걸까요? 일단, 분산추적의 정의와 기능에 대해 알아봅시다. 분산추적이란,분산 추적은 분산 시스템에서 서비스간의 요청 흐름을 추적하고 모니터링하는 방법입니다.이는 각 서비스의 호출 관계와 성능을 시각화하여 문제를 진단하고 해결할 수 있도록 돕습니다.분산 추적이 MSA 설계에 필요한 이유는,마이크로 서비스 아키..
-
API 게이트 웨이에 대해 파헤치기프로그래밍 언어/Spring 2024. 8. 6. 23:00
이 글은 API 게이트웨이에 대한 공부를 제가 이해할 수 있는 내용으로 정리한 글입니다. 부정확한 서술이나 기술에 대한 정보가 틀릴 가능성이 있습니다. API 게이트웨이 개요API 게이트웨이는 MSA를 구현하는데 필요한 Spring Cloud에서 지원하는 확장 기능 중 하나이다. API 게이트웨이가 하는 일을 간략적으로 보자면클라이언트의 요청을 받아 백엔드 서비스로 라우팅하고, 다양한 부가기능을 제공하는 중간 서버의 역할을 한다.클라이언트와 서비스간의 단일 진입점 역할을 한다.위의 역할을 수행하기 위해 API 게이트웨이는 아래와 같은 핵심 기능들을 가지고 있다.라우팅 정책 : 클라이언트 요청을 적절한 서비스로 전달 (예: 라우팅, 속도 제한, 요청/응답 조작 등등)보안 정책 : 인증, 권한 부여, 엑세스..
-
정규 표현식 정리프로그래밍 언어/Spring 2023. 11. 29. 18:05
더보기 해당 글은 필자가 공부한 내용을 이해를 위해 정리한 것입니다. 전문성이나 정확성 다소 부족할 수 있습니다. 정규표현식이란? 규칙을 가진 문자열의 집합을 표현하는데 사용되는 언어입니다. 정규표현식이 나타나게된 이유? 사람은 텍스트를 의미를 가진 문자열로 인식할 수 있습니다. 예를 들면, 사람이 010-1234-5678나 123456-1234567 같은 문자열을 보면 바로 전화번호나 주민등록번호임을 유추할 수 있습니다. 하지만, 컴퓨터의 입장에서는 두 문자열 모두 의미없는 문자열일 뿐 입니다. 현대에서는 막대한 양의 데이터들을 고도화해야 하기때문에 이런 정보들을 일일히 사람들이 처리하기는 매우 어려운 일입니다. 그래서 나타난게 정규표현식입니다. 정규표현식을 사용하면 컴퓨터에게는 의미없는 문자열을 유용..
-
1대N, N대1, N대M 관계에 대해 알아보자프로그래밍 언어/Spring 2023. 11. 20. 21:36
앞서 Entity를 만들고 ERD를 그려보면서 서로 다른 두 데이터의 연관관계에 대해 살펴보았습니다. 이번엔 그 연관관계의 심화과정이라 할 수 있는 1대N, N대1, 그리고 N대M관계에 대해 알아보겠습니다. 1대N 관계 우리가 휴게소에서 음식을 주문한다고 가정해봅시다. 고객이 음식을 주문할 때, 주문 정보는 고객 테이블에 들어가야할까요? 아님 음식 테이블에 들어가야할까요? 일단, 한 명의 고객이 여러 음식을 시킬 수 있으니 고객이 1, 음식을 N으로 하고 1대N 관계가 성립한다고 볼 수 있습니다. 아래 표와 같이 주문이 들어왔다고 생각해봅시다. 주문번호id 이름 음식id order0001 민수 food0001 order0002 영희 food0001 order0003 민수 food0002 고객 테이블에 주..
-
Spring MVC 간단 정리프로그래밍 언어/Spring 2023. 11. 20. 13:53
MVC란 Model View Controller의 준말로 코드를 model, view, controller로 각각의 역할을 분리하는 디자인 패턴입니다. 여기서 디자인 패턴이란 효율적으로 소프트웨어를 개발하기위한 여러가지 방법들을 일컫습니다. 간단하게, Model은 데이터와 비지니스 로직을 담당하고, View는 사용자와 상호작용하는 인터페이스를, Controller는 Model과 View를 조정하고 제어하는 중간다리 역할을 합니다. MVC패턴의 이점은 프로그램의 구성요소를 3가지로 분리함으로써 코드의 재사용성과 유지보수성을 높이고, 개발자들의 협력을 좀 더 용이하게 합니다. 그래서 현재까지 많은 개발자들과 회사들이 MVC패턴을 디자인 패턴으로 이용하고 있습니다. 그렇다면 Spring MVC는 무엇일까요? ..
-
(2023-11-08 TIL) IoC와 DI에 대하여프로그래밍 언어/Spring 2023. 11. 8. 17:23
건설업계에서는 튼튼한 건물을 짓기 위해 굉장히 엄격한 설계원칙과 디자인 패턴을 고수한다고 한다. 이는 한 사람의 단시간에 생각해 낸것이 아니라 여러 사람의 노하우와 기술이 합쳐져서 나온 최적의 건설 이론이라고 볼 수 있다. 코딩에서도 마찬가지로 튼튼하고 유지보수가 좋은 코드를 만들기 위해서 지켜야할 몇가지 설계원칙과 디자인 패턴이 있다. 오늘의 TIL 주제인 IoC(Inversion of Control)와 DI(Dependency Injection)이다. IoC(제어의 역전)이란? 애플리케이션의 흐름 조정(management of an application's flow)이 애플리케이션의 다른 부분으로 이전되는 경우, 연결성(pluggability), 테스트 가능성(testability), 유용성(usab..
-
(2023-11-07자 TIL) 3계층 아키텍쳐에 대해 알아보자프로그래밍 언어/Spring 2023. 11. 7. 21:43
1주차 강의를 들으며 memo 어플리케이션을 만들던 도중, 이런 생각이 들었다. 'Controller.java 파일에 이렇게 많은 기능들이 있어도 될까?' 강의를 수강하며 만든 내 Controller에는 CRUD와 그밖의 여러가지 기능들이 혼잡해 있어 코드가 한눈에 들어오지 않았다. 이는 과거의 개발자들이 절대 용납하지 않는 직관성과 가독성을 해치는 '안좋은 코드'의 예시에 부합한다. 그렇다면, 이 복잡한 기능을 가진 Controller를 어떻게 단순하고 명료하게 만들었을까? 여기서부터가 2주차 Spring강의의 첫번째 키워드, '3계층 아키텍쳐'(3 Layer Architecture)이다. IBM에서 정의한 3계층 아키텍쳐란, 1. 애플리케이션을 프레젠테이션 계층 또는 사용자 인터페이스, 2. 데이터가..