개발을 하다 보면 “도메인”과 “엔티티”라는 용어는 한 번씩 듣게 된다. 그런데 누구는 도메인을 엔티티와 비슷한 개념으로 사용해서 이야기하는 것 같고, 누구는 도메인과 엔티티는 다르다! 라고 말을 하는 것을 종종 볼 수 있다. 나 또한 그랬고 두 개념이 어떻게 다른지, 실상 모르고 용어를 사용했었다. 결론부터 말하면 내가 이해한 도메인과 엔티티는 같은 의미로 사용될 수도 있고 아닐 수도 있다. 얘가 지금 무슨 소리 하는 거지 할 수 있다.. 우선은 도메인과 엔티티는 내가 만들려는 애플리케이션의 아키텍처 설계에 따라 달라질 수 있다. 즉, 어떻게 설계했느냐에 따라 사용되는 용어의 의미가 달라질 수도 있고 같아질 수도 있다. 그래서 도메인, 엔티티 이야기를 할때는 맥락파악이 중요하다. 2가지 케이스로 나눌 ..
Clean + Layered Architecture이번 2주 차 과제는 아키텍처 설계가 중점인 과제를 진행했다.평소 애플리케이션을 구성할 때 아키텍처 설계 없이 무지성으로 Layered Architecture로 설계하여 애플리케이션을 만들었었는데, 이번 과제를 진행하면서 다양한 아키텍처에 대해 배울 수 있었다. (Layered, Clean, Hexagonal, Clean + Layerd) 이제껏 무지성으로 설계해 왔던 아키텍처를 실제 애플리케이션을 만들 때, 어떻게 아키텍처를 설계할지 고민하며 "이렇게 설계했을 때의 장점이 무엇이지?", "기존에 내가 설계했던 방식은 이러한 문제점이 있었구나" 같은 생각들을 정리하고 몸으로 직접 느낄 수 있었다. 가장 크게 배운 부분은 "하위 계층의 변경은 상위 계층으..
한 주를 돌아보며 회고를 작성합니다 TDD1주차는 TDD로 point 이용 / 충전 관련 애플리케이션을 만드는 과제를 진행했다.평소 개발 방식이 기능 구현 → 테스트 작성 순이었는데, 역순으로 테스트 코드 작성을 먼저 하려니 어색하고 생각해야 할 부분이 많았다.어떤 기능을 구현해야 하는지 요구사항을 정확히 파악해야 테스트 코드를 작성할 수 있는데, 테스트 코드를 먼저 작성하면서 하나의 시나리오를 구성한다고 생각하면 편했다.예를 들어 포인트를 충전하는 기능을 구현한다면, 테스트 코드를 아래의 흐름으로 먼저 작성할 수 있다.포인트를 충전할 사용자의 정보를 준비한다.해당 정보의 사용자에 포인트를 충전하는 메서드를 호출한다.메서드의 결괏값이 내가 예상한 결괏값과 일치한지 검증한다.테스트 코드를 작성할 때, 검..
Actions Runner Controller 를 이용해 self-hosted runner로 배포하기 Github actions workflow를 실행시키는 환경에는 Github가 제공하는 github-hosted 환경과 자체적으로 관리하는 self-hosted 환경이 존재한다. 대부분(나 또한 그랬듯이) github-hosted 환경에서 빌드 및 배포 작업을 진행한다. 대표적으로 ubuntu-latest 환경(windows-latest, macos-latest..)이 있다. 하지만 이번에 self-hosted 환경에서 애플리케이션을 빌드 및 배포하는 작업을 진행했다. self-hosted runner를 어디에서 실행시킬지도 2가지 방법으로 나뉜다. (다른 방법이 더 존재할 수도..) EC2에서 실행 e..
AWS EKS “instances failed to join the kubernetes cluster” Error AWS EKS Node Group을 생성 하는데, instances failed to join the kubernetes cluster 에러가 발생하는 문제가 있었다. 결론부터 나의 경우 체크해보아야 하는 부분은 크게 3가지였다. Cluster Private, Public Endpoint 확인 Cluster Worker Node의 IAM 권한 확인 Cluster가 배치된 VPC 내 Subnet 연결 설정 확인 노드 그룹 생성 시 인스턴스는 정상적으로 생성이 되었는데, 해당 인스턴스가 eks cluster에 Join이 되지 않아 cluster 생성에 실패하는 문제였는데 어떻게 해결했는지 복기해..