일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 백엔드
- EC2
- 42서울
- 개발공부
- 도커
- 프리티어
- UNICON2023
- UNIDEV
- 체크인미팅
- 오블완
- 인디게임
- VPC
- 생활코딩
- 티스토리챌린지
- bastion host
- UNICON
- 전국대학생게임개발동아리연합회
- 프로그래밍
- 백엔드개발자
- NAT gateway
- 스프링부트
- 인프라
- AWS
- 온라인테스트
- CICD
- Route53
- 자바개발자
- 위키북스
- 게임개발동아리
- 라피신
- Today
- Total
목록Study (69)
Hyun's Wonderwall

0. 시작하기 전에이 글은 AWS EC2, RDS + GitHub Actions + Docker 기술을 사용해 Spring Boot 프로젝트를 배포하는 방법을 차근차근 안내한다. 필자가 야매로 터득한 방법으로, 백엔드 서버를 빠르게 배포하는 방법을 설명하는 데 초점을 맞추고 있다. HTTP 배포하는 법 중심으로 다루며, HTTPS를 적용하는 방법 또한 글 후반부에 소개한다.백엔드 개발자가 혼자 배포를 연습하거나, 프론트엔드 로컬과 통신할 때나, 프론트엔드와 백엔드를 같은 서버로 배포할 때는 HTTP여도 문제없다. 다만 프론트엔드와 백엔드를 따로 배포하는 경우(=3티어 아키텍쳐), Vercel, Netlify 등으로 배포된 프론트엔드 서버와 통신하기 위해서는 백엔드 서버에 HTTPS를 적용해야 한다. (이..

(이 포스팅은 한글 폰트가 원래는 안 깨졌다가 머지 후 갑자기 깨지는 상황에 대한 문제해결을 다룹니다. 폰트를 처음 설치한 후 한글이 깨지는 경우는 다른 이슈이니, 다른 포스팅을 찾아보세요) Unity로 협업 프로젝트를 하다 보면 폰트가 깨지는 일이 자주 발생한다. 에러 메시지: The file 'Assets/TextMesh Pro/Resources/Fonts & Materials/Galmuri11 SDF.asset' seems to have merge conflicts. Please open it in a text editor and fix the merge.이 에러가 발생하는 원인은 한글의 문자 종류가 매우 많기 때문이다. 우리는 SDF 파일 (TMP_Font Asset) 의 Generation Se..
ERD를 설계할 때 컬럼을 NOT NULL로 설정하고, 엔티티 매핑을 위해 도메인 코드를 작성하다가 이것과 관련해 선택지가 많음을 알게 되었다. (사실 알게 된 지가 세 번은 넘었을 텐데, 정리를 해놓지 않았더니 헷갈려서 이번에 정리하게 되었다.)1. nullable=false컬럼을 NOT NULL로 설정하는 것. 엔티티와 매핑되는 테이블 생성을 위한 DDL 쿼리(create table)가 나갈 때, 컬럼에 NOT NULL 제약조건(constraints)를 걸어준다.이것은 데이터베이스 테이블 컬럼에 NULL 값이 삽입되는 것을 막는 것이어서, 서비스 로직에서 엔티티에 NULL이 들어오는 것은 아무런 에러를 발생시키지 않는다.2. @NotNullSpring Boot Validation 라이브러리(buil..

자바 스프링을 시작한 지가 벌써 1년이 넘었다. 시간이 무섭도록 빠르다!내가 스프링을 처음 공부했던 것은 작년 3월 인터넷 강의 스터디를 통해서였다. C++ 알고리즘 공부를 어느 정도 해본 상황이었어서, 자바 문법을 간단히 익히고 용기 있게 바로 스프링에 도전했었다. 그러나 얼마 못 가 내가 얼마나 무모했는지를 깨달았는데, 강의 자체도 어려운 강의였는데 나는 객체 지향과 웹 기초 지식(HTTP 등) 조차 없었다. 결국 막막한 이론 부분은 감만 잡고 넘어가버리고 코드를 따라 치고 구현하는 것을 확인하기 급급했던 기억이 난다.. 이론 지식이 빈약하다보니 프로젝트 실전에 뛰어들었을 때 더욱 많은 에러를 만났다. ERD 설계를 잘못하거나 Service끼리 필드 주입을 해주어 순환 참조가 나는 등... 프로젝트 ..
EFUB 4기 BackEnd Lead_ 도메인 주도 개발 스터디스터디 커리큘럼: 최범균, "도메인 주도 개발 시작하기: DDD 핵심 개념 정리부터 구현까지"3주차 과제: Chapter 10. 이벤트, Chapter 11. 애그리거트 트랜잭션 관리Chapter 11. CQRSKeywords: 명령 모델과 조회 모델, CQRS 장단점11.1 단일 모델의 단점시스템 상태를 변경할 때와 조회할 때 단일 도메인 모델을 사용하면 성능에 문제가 생길 수 있고 구현이 복잡하다.복잡도 낮추는 방법: 상태 변경을 위한 모델과 조회를 위한 모델을 분리하는 것.11.2 CQRS시스템이 제공하는 기능 (1) 상태 변경, (2) 상태 정보 조회.상태를 변경하는 범위와 상태를 조회하는 범위가 정확하게 일치하지 않음. 복잡도 해결을..
EFUB 4기 BackEnd Lead_ 도메인 주도 개발 스터디스터디 커리큘럼: 최범균, "도메인 주도 개발 시작하기: DDD 핵심 개념 정리부터 구현까지"3주차 과제: Chapter 10. 이벤트, Chapter 11. 애그리거트 트랜잭션 관리Chapter 10. 이벤트Keywords: 이벤트의 용도와 장점, 핸들러 디스패처와 핸들러 구현, 비동기 이벤트 처리10.1 시스템 간 강결합 문제구매 취소 및 환불 로직을 어떻게 구현해야 할까?현재까지의 코드에서는 주문 바운디드 컨텍스트와 결제 바운디드 컨텍스트 간에 강결합(high coupling)이 존재한다. 주문이 결제와 강하게 결합되어 있어 영향을 받는 것이다.이벤트를 사용하면 이런 강한 결합을 없앨 수 있다. 특히 "비동기 이벤트" -> 두 시스템 간..

모바일 AR로 카메라 기능을 구현해 3D 캐릭터와 사진을 촬영하려고 한다.유니티에 Android 모듈이 준비되어있는 상태에서 시작했다. Vuforia Engine1. 작업할 유니티 프로젝트를 준비한다.2. Vuforia 사이트에서 유니티용 SDK를 다운로드한다.(아래의 링크에서 첫번째 옵션인 "Add Vuforia Engine to a Unity Project or upgrade to the latest version"을 클릭)https://developer.vuforia.com/downloads/sdk SDK Download | Engine Developer PortalUse Vuforia Engine to build Augmented Reality Android, iOS, and UWP applica..
EFUB 4기 BackEnd Lead_ 도메인 주도 개발 스터디스터디 커리큘럼: 최범균, "도메인 주도 개발 시작하기: DDD 핵심 개념 정리부터 구현까지"3주차 과제: Chapter 9. 도메인 모델과 바운디드 컨텍스트Chapter 9. 도메인 모델과 바운디드 컨텍스트Keywords: 바운디드 컨텍스트, 바운디드 컨텍스트 간 통합과 관계9.1 도메인 모델과 경계한 개의 모델로 모든 하위 도메인을 표현하려는 시도는 불가능하다.- 하위 도메인마다 같은 용어라도 의미가 다르고, 같은 대상이라도 지칭하는 용어가 다를 수 있다. 올바른 도메인 모델을 개발하려면 하위 도메인마다 모델을 만들어야 한다.- 각 모델은 명시적으로 구분되는 경계를 가져서 섞이지 않도록 해야 한다. 여러 하위 도메인의 모델이 섞이면 모델의..
EFUB 4기 BackEnd Lead_ 도메인 주도 개발 스터디 스터디 커리큘럼: 최범균, "도메인 주도 개발 시작하기: DDD 핵심 개념 정리부터 구현까지" 3주차 과제: Chapter 7. 도메인 서비스, Chapter 8. 애그리거트 트랜잭션 관리 Chapter 8. 애그리거트 트랜잭션 관리 Keywords: 애그리거트 트랜잭션, 애그리거트 잠금 기법 8.1 애그리거트와 트랜잭션 애그리거트의 일관성이 깨지는 문제가 발생하지 않도록 하려면 다음 두 가지 중 하나를 해야 한다. 운영자가 배송지 정보를 조회하고 상태를 변경하는 동안 고객이 애그리거트를 수정하지 못하게 막는다 운영자가 배송지 정보를 조회한 이후에 고객이 정보를 변경하면, 운영자가 애그리거트를 다시 조회한 뒤 수정하도록 한다, 이 두 가지는..
EFUB 4기 BackEnd Lead_ 도메인 주도 개발 스터디 스터디 커리큘럼: 최범균, "도메인 주도 개발 시작하기: DDD 핵심 개념 정리부터 구현까지" 3주차 과제: Chapter 7. 도메인 서비스, Chapter 8. 애그리거트 트랜잭션 관리 Chapter 7. 도메인 서비스 Keywords: 응용 서비스 구현, 표현 영역의 역할, 값 검증과 권한 검사 7.1 여러 애그리거트가 필요한 기능 결제 금액 계산 로직의 경우 고려할 사항이 많아 한 애그리거트에 넣기 애매하다. 애그리거트에서 자신의 책임 범위를 넘어서는 기능을 구현하게 하면 안 된다. 이를 해결하는 방법: 도메인 기능을 별도 서비스로 구현 7.2 도메인 서비스 도메인 서비스: 도메인 영역에 위치한 도메인 로직을 표현할 때 사용한다. -..