과제를 진행하다 레이어드 아키텍처를 적용하던 중, "Repository 인터페이스는 Domain에, 구현체는 Infrastructure에" 라는 요구사항을 보고, 보통 상위 계층이 하위 계층을 호출하는 거 아닌가?라는 생각이 들었다.이 의문을 해결하는 핵심이 의존성 역
레이어드 아키텍처를 공부하고 적용을 해보면서, 레이어드 아키텍처도 계층을 나누는데, 클린 이키텍처는 왜 존재하고, 어떻게 다른지 궁금했다.클린 아키텍처는 레이어드 아키텍처의 문제점을 해결하고 더 엄격한 의존성 규칙을 적용한 아키텍처 패턴이다. Rovert C.Marti
이커머스 프로젝트를 진행하면서 "레이어드 아키텍처로 설계하라" 는 요구사항이 있었다. 처음에는 단순히 Controller-Service-Repository 구조만 생각했는데, 제대로 된 레이어드 아키텍처는 훨씬 더 체계적이고 명확한 책임 분리가 필요했다.특히 "도메인
이번 주차를 진행하며 다음과 같은 문제를 겪었다.• TDD(Test Driven Development) 에 대한 잘못된 인식이 있었음• 무조건 비즈니스 로직을 구현하기 전에 테스트 코드를 작성해야 한다고 오해하고 있었음• 모든 기능에 대해 테스트 코드를 작성해야 한다고
Study 과제 중 TDD를 기반으로 테스트 코드를 작성하는데, 포인트 충전/사용 시스템을 Kotlin 으로개발하면서 요구 사항에 "동시성 문제 해결" 이 있었다. 실제 데이터베이스를 사용하는게 아닌인메모리를 사용하게 되면서 DB의 Transaction 없이 동시성을

원래 회사에서 REST API를 통해서 클라이언트와 API 통신을 하고 있었는데 불필요한 join문과 수시로 바뀌는 기획에 대응을 하기 위해서 클라이언트 입맛에 맞게 데이터를 조회할 수 있도록 GraphQL을도입하기로 했다.사용을 하면서 GraphQL로 file을 up
Docker image를 local에서 build를 한 후 이를 저장하고 압축해서 보관하거든 다른 환경으로 이동할 수 있다. 솔직히 DockerHub에 image를 등록해서 사용할 수 있지만 리소스가 부족한 환경에서는 이 방법이 괜찮다고 생각했다.아래에서는 image
2개의 서버와 mongoDB, MySQL을 docker-compose를 이용해서 build를 하고, 실행하는 단계에서 문제가 발생했다. MySQL과 연결되어 있는 한 서버에서 Database Connection 관련 에러가 발생했고,이 문제는 MySQL docker i
요즘에 ECS를 통해서 배포를 할 때 Fargate를 사용하는 경우가 많다. Fargate는 요청에 따라서 자동으로 확장되는 서버를 제공하면서 서버리스 형태의서비스를 제공한다.하지만 Fargate는 EC2 대비 비용이 비교적 비싼 편이다. 따라서 초기 비용을 줄이기 위
Docker 이미지를 로컬에서 빌드를 한 후에 이를 저장하고 압축해서 보관하거든 다른 환경으로 이동할 수 있다. 솔직히 DockerHub에이미지를 등록해서 사용하는 방법이 나을 수 있지만 리소스가 부족한 환경에서는 이 방법이 괜찮다고 생각한다.아래는 이미지 빌드 후 추
2개의 서버와 mongoDB, MySQL을 docker-compose를 이용해서 build 하고 실행하는 단계에서 문제가 발생했다.MySQL과 연결되어 있는 한 서버에서 Database Connection 관련 에러가 발생했고, 이 문제는 MySQL image가 bui
NodeJS를 이용해서 대용량 데이터 처리 관련해서 개발을 하다 아래와 같은 에러 메시지를 만났다.이 에러는 그냥 말 그대로 메모리 사용량이 증가하면서 Javascript엔진이 터져버린 것이다.NodeJs의 기본적인 메모리 제한은 512MB다. 그럼 내가 처리를 하려고
Spring Boot를 이용해서 Spring Security 실습을 하는 도중 JWT 발급 관련해서 아래와 같은 에러가 발생했다.Unable to determine a suitable MAC or Signature algorithm for the specified ke
Dockerfile로 Node.js 어플리케이션을 말아서 docker-compose를 사용해 DB도 같이 띄우려고 docker-compose up --build 명령어를 실행하는 도중에err: exec: "docker-credential-desktop" 라는 에러가 발
단위 테스트는 필수적인 작업이라고 생각한다. 단위 테스트는 어플리케이션의 특정 기능이 기대한 대로 동작하는지 확인하는 데 도움을 준다. 이 글에서는 JUnit과 Mockito를 사용해서 Spring 어플리케이션에서 단위 테스트를 작성하는 방법을 설명하려고 한다. 1.
Spring Boot 프로젝트에서 Gradle을 사용해서 의존성을 관리할 때, 다양한 의존성 설정 옵션을 통해 특정 상황에 맞게 라이브러리를 관리할 수 있다. 이 글에서는 Gradle의 주요 의존성 관리 옵션인 implementation, compileOnly, ann
개인 프로젝트를 진행하다 git push를 할 때 제한된 권한관련 에러가 발생했다. 가끔 다른 맥북으로 개발하다보면 생기는 에러인데, 매번 구글에서 검색하기 귀찮아서 직접 작성해보려고 한다.우선 github에 들어가서 오른쪽 프로필 이미지를 누른다.Settings를 클

최근에 회사에서 갑작스러운 트래픽으로 서버가 다운됐었다😢 상황을 정리하자면 현재 회사는 Elastic Beanstalk(이하 EB)을 사용하고 있고, EB를 사용해서 ALB, EC2, Auto Scaling을 하고 있다.그런데 여기서 Auto Scaling 하는 과정
회사에 점점 더 프로젝트에 참여하는 인원들이 증가하고, 회사에서 새로운 개발문화 gitFlow를 도입하면서 서로 작업한 코드를 PR을 올리게 됐다.현재 회사에서 프로젝트는 nestJS를 사용하고 있다. 하지만 PR을 올리고 코드리뷰를 하면서 eslint와 같은 이슈들이
socket 공부를 할겸 작은 프로젝트를 만들고, DB와 각 코드들을 세팅 후 코드를 실행시키는데 키자마자 아래 에러가 나타났다.NestJS를 하면서 처음 보는 에러,, 구글링도 해보고 chatGPT에게도 물어봤지만 내가 찾고자 하는 해결 방법을 찾지 못했다.그래서 찾