Programming
[스프링] RedisUtil 제공하기 with Azure Cache for Redis
Azure Cache for Redis란? Azure Cache for Redis | Microsoft AzureAzure Cache for Redis를 통해 빠르고 스케일링 가능한 애플리케이션을 제공하고 오픈 소스와 호환되는 완전 관리형 메모리 내 데이터 저장 서비스를 통해 Database as a Service를 캐시하세요.azure.microsoft.comAzure Cache for Redis란, Azure에서 제공하는 관리형 Redis 서비스이다. Spring 애플리케이션에서 Azure 리소스들에 접근할 때 사용할 수 있는 여러 인증 방식 중, Entra ID 인증 방식을 선택했다. Entra ID 인증 방식에 대해서는 이전 포스팅에서 상세히 다루었으니, 아래 포스팅을 참고하면 좋을 것 같다. [..
[스프링] 환경별(dev/qa/prd) 설정 관리를 위한 Spring Profile : application.properties
프로젝트를 진행하다 보면 로컬, 개발, 검증, 운영 환경에 따라 DB, 서버 포트, Redis 호스트 주소 등 다양한 설정을 환경에 따라 다르게 적용해야 할 때가 많다. 이러한 처리를 일일이 수동으로 조정하는 것은 매우 번거롭지만, Spring Boot의 Profile 기능을 이용하면, 번거롭게 매번 설정을 수정할 필요 없이 간편하게 환경에 맞는 설정을 적용할 수 있다. Spring은 하드 코딩을 지양하고, 구현하고자 하는 시스템의 환경에 맞춰 환경 변수를 효율적으로 조정할 수 있는 다양한 방법을 제공한다. 이를 위해 Properties를 설정하고, 필요한 Properties를 로드하여 시스템에 맞는 환경에서 애플리케이션을 기동할 수 있다. 오늘은 개발/검증/운영 환경에 따라 profile을 적절하게 설..
[스프링] 스프링 가이드 : 패키지 구조
개발표준정의서, 특히 패키지 구조에 대한 가이드를 정립하면서 어떤 패키지 구조가 가장 Best Practice일까에 대한 고민이 많았다. 오늘은 패키지 구조에 대해 잘 정리된 글이 있어 이 글을 기반으로 정리해보는 시간을 가져보려 한다. 패키지 구성은 크게 레이어 계층형과 도메인형 이렇게 2가지 유형으로 나눠 생각해볼 수 있다. 각 유형별로 간단하게 알아보고, Best Practice를 고민해보자. 계층형계층형 구조는 각 계층을 대표하는 디렉터리를 기준으로 코드들이 구성된다.└── src ├── main │ ├── java │ │ └── com │ │ └── example │ │ └── demo │ │ ..
[스프링] Service와 ServiceImpl 구조에 관하여
Service의 관점에서 바라봤을 때, 백엔드 Layer는 다음과 같이 두 가지 구조로 구현될 수 있다.Controller - Service - ServiceImpl - DBController - Service - DB이 두 구조의 차이는 ServiceImpl의 사용 여부에 따른 것이다. ServiceImpl를 사용하는 이유는 무엇일까?ServiceImpl을 사용하는 경우, Service Interface와 ServiceImpl Class 구조를 사용하게 된다.기본적으로 Service 인터페이스와 ServiceImpl 구현체를 나누게 된 이유는 두 가지가 있다. 1. 다형성과 OCP(Open Closed Principle)이론적으로 인터페이스와 구현체를 분리하면 구현체는 외부로부터 독립적이 된다. 이로 ..
[Go] Functions 기초
📌Index Function 정의하기 Multiple Value를 반환하는 Function 만들기 여러개의 Argument를 가질 수 있는 Function 만들기 Naked Return Defer 🔎 VScode에서 실습을 진행합니다. ✔️ Function 정의하기 곱셈 연산을 수행하는, multiply function을 정의해보자. main.go func mutiply(a int, b int) int { return a*b } 파라미터의 타입, 리턴 타입을 위와 같이 작성해준다. 만약 여기서 더 간단하게 작성하고 싶고, a와 b의 타입이 같다면, 다음과 같이 작성하는 것도 가능하다. func multiply(a , b int) int { return a * b } ✔️ Multiple Value를 반환..
[Go] Packages and Imports
📌Index Package Import 🔎 VScode에서 실습을 진행합니다. ✔️ Package 모든 Go 프로그램은 package로 구성되고, package를 통해서 모듈화 및 코드의 재사용 기능을 제공한다. Go의 많은 Package들이 표준 라이브러리로 제공하며, 이러한 표준 라이브러리는 환경변수 GOROOT/pkg 경로에 설치되어 있다. Main Package 일반적으로 Package는 라이브러리 형태로 사용되지만 main 이라고 명시된 package는 라이브러리가 아닌, 실행 프로그램으로 만들게 된다. main.go 로 이름을 지정한다는 것은, 해당 프로젝트를 컴파일 하고 싶다는 뜻이고, 그것을 사용할 것이란 뜻이다. 컴파일 하지 않을 것이라면 다름 파일명 test.go, learning.go..
[Go] Windows에 Golang 설치하기
📌Index Go 설치하기 Go 환경 변수 세팅하기 ✔️ Go 설치하기 만약 Golang 설치를 원하지 않거나, 설치가 어려운 상황이면 repl.it을 사용할 수 있다. repl.it에서는 Go를 설치없이 웹 브라우저에서 사용해볼 수 있다. 자, 그럼 이제 Golang을 설치해보자. 먼저 https://go.dev/dl/ 에 접속해서 자신의 운영체제에 맞게 다운로드 한다. Windows라면 다음을 선택한다. Setup을 실행하고, 계속 Next를 누르면 된다. 단, Go의 설치 경로를 지정해주는 창이 있는데, 추후 GOROOT라는 환경변수와 일치하는지 확인해야 하니, 기억해야둬야한다. ✔️ Go 환경 변수 세팅하기 이제 환경 변수들을 확인해볼텐데, 만약 해당 환경변수가 없다면, 새로만들기로 추가해주면 된..