1. CB사 모듈 개발 연동CssApplication이것도 웹 서버가 떠서, 요청 오는 다양한 API를 처리해 줄 수 있어야 한다.package happyprogfrog.cssimport org.springframework.boot.autoconfigure.SpringBootApplicationimport org.springframework.boot.runApplication@SpringBootApplicationclass CssApplicationfun main(args: Array) { runApplication(*args)} build.gradle.ktsplugins {}version = "0.0.1"dependencies { implementation("org.springframewor..
1. Kafka 개요링크드인에서 개발아파치 재단에서 운영하고 있는 플랫폼 Message Oriented Middleware미들웨어란?시스템이나 컴포넌트 사이에서 중간자 역할을 해주는 것두 시스템이 너무 강하게 연결되어 있으면, 서로의 의존성이 높기 때문에 미들웨어가 존재한다.ex) 서버 A - 서버 B가 강한 결합을 가지고 있다고 할 때, 서버 A 장애 시 서버 B에 전파됨따라서, 느슨한 결합이 필요하다.이런 완충재 역할을 하는 것이 '미들웨어'이고, '메시지에 기반했다'라고 해서 Message Oriented Middleware(MOM)라고 한다.메시지 큐를 사용하는 플랫폼: Kafka, RabbitMQ모놀리식 아키텍처에서 MSA로 변화되면서 이런 Kafka, RabbitMQ 같은 플랫폼의 수요가 늘..
1. API 스펙 설계, API-암복호화 개발유저의 정보들을 받아서 심사를 요청하는 API해당 유저의 심사 요청 결과를 조회하는 API API 스펙 설계GenerateKeyUUID에서 -를 제외한 유저 키 생성UUID는 중복될 가능성이 낮기 때문에, 유저 키로 사용하기에 적합하다.package happyprogfrog.api.loanimport org.springframework.stereotype.Componentimport java.util.*@Componentclass GenerateKey { fun generateUserKey() = UUID.randomUUID().toString().replace("-", "")} 확장 가능성이 있는 Service, Controller는 인터페이스를 작성해..
git stash현재 브랜치의 상태를 커밋하지 않고, main 브랜치로 이동하고 싶은 경우가 생겼다! 우선, 직접 중인 사항을 stash*에 잠시 저장한다.git stash *stash Modified이면서 Tracked 상태인 파일과 Staging Area에 있는 파일들을 보관해 두는 장소이다. 아직 끝내지 않은 수정사항을 스택에 잠시 저장했다가 나중에 다시 적용할 수 있다. 필요하다면, 어떤 이유로 stash 하는지 메시지를 남길 수 있다.git stash -m "스태시 하는 이유 작성"현재 적용된 commit 이후로 변경된 모든 사항들이 stash 공간으로 이동된다. 이제 main 브랜치로 이동하여 필요한 작업을 진행한다.git checkout main 필요한 작업이 완료되었으면, 다시 원래 브랜치..
Set 컬렉션Set 컬렉션은 저장 순서가 유지되지 않는다. 또한 객체를 중복해서 저장할 수 없고, 하나의 null만 저장할 수 있다. Set 컬렉션은 수학의 집합에 비유될 수 있다. 집합은 순서와 상관없고 중복이 허용되지 않기 때문이다. Set 컬렉션에는 HashSet, LinkedHashSet, TreeSet 등이 있으며 Set 컬렉션에서 공통적으로 사용 가능한 Set 인터페이스 메서드는 다음과 같다.import java.util.Set;import java.util.HashSet;import java.util.LinkedHashSet;import java.util.TreeSet;기능메서드설명객체 추가boolean add(E e)주어진 객체를 성공적으로 저장하면 true를 리턴하고, 중복 객체면 fal..
1. 프로젝트 기술 스택 설명Gradle vs MavenGradle이 Maven보다 최신 기술이고, Maven의 단점을 보완하기 위해 나온 빌드 툴퍼포먼스와 사용성에서 Gradle이 더 좋더라 Single-Module vs Multi-Module중복되는 코드 제거공통 모듈을 하나 두고, 암호/다른 서버와 통신하는 웹 클라이언트/DB 관련된 프로파일 작성 등 한 곳에 모아둘 수 있음관리 리소스 줄어듦서비스를 진행하다가 데이터베이스가 바뀔 일이 있다고 가정해 보자. 엔티티가 여러 군데에 적용이 되어있다면 영향도 파악이 굉장히 어렵다. 하지만 한 곳에 모아서 엔티티를 관리한다면, 서비스를 운영하거나 유지보수하는데 유리각 모듈별로 jar 파일 실행 가능 Kotlin편의성fianldata classnullable..
The State of Developer Ecosystem in 2023 InfographicLearn about the latest trends in tools, technologies, AI, and programming languages.www.jetbrains.com
개요기존에 있던 신용 평가 모델로는 대출을 받기 어렵지만, 충분히 상환 능력이 있는 그런 유저들이 새로운 신용 평가 모델에서는 대출을 받을 수 있다. 이렇게 새로운 신용 평가 모델에서 대출을 받은 유저들의 데이터가 쌓이면서 다시 한 번 신용 평가 모델을 개선할 수 있는 선순환 구조를 가지게 된다. 따라서, IT 업계에서 자체적인 신용 평가 모델을 가질려고 하고 이를 대출이나 후불 결제 등에서 사용한다. 이렇듯 신용 평가 시스템이 있고, 심사를 통해 대출을 받게되는데 이러한 대출 심사 프로세스를 간소화한 버전을 개발해보자! 최종 코드는 이쪽에서 확인 GitHub - happyprogfrog/fintech: 대출 심사 프로젝트대출 심사 프로젝트. Contribute to happyprogfrog/fintec..
1. Auditing? 게임 회사에서 근무할 때, 자주 했던 업무 중 하나가 게임 이용자 분들의 CS를 처리하는 일이였다. 가령, "A 아이템을 수령했는데, 인벤토리에 없어요ㅠㅠ"와 같은 문의가 들어오면 DB 테이블에서 A 아이템이 생성된 시각이나 수정된 시각 등을 확인해서, 로그를 살펴볼 시간을 대략적으로 추측하고 상세한 플레이 로그를 한 번 더 확인하는 식이다. 이렇듯 서비스를 운영할 때 데이터가 생성되고, 수정된 시각을 기록하고 트래킹하는 것은 중요하다. Audit은 '검사하다', '감사하다'는 의미를 가지고 있다. 스프링 데이터 JPA에서는 Auditing이라는 기능을 사용해서 엔티티가 생성되고, 변경되는 그 시점을 감지해 생성 시각, 수정 시각, 생성한 사람, 수정한 사람을 기록할 수 있다. 직..
개발하는 API 마다 request parameter의 null 체크를 해야하는 경우가 있다.이때, Bean Validation에서 제공하는 표준 Validation인 @NotNull, @NotEmpty, @NotBlank를 사용하는데 이 세가지가 비슷하면서도 분명한 차이가 있어 헷갈리지 않도록 한 번 정리하려고 한다! Jakarta Bean Validation - HomeJakarta Bean Validation is a Java specification which lets you express constraints on object models via annotations lets you write custom constraints in an extensible way provides the APIs..