일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 자바개발자
- UNIDEV
- 온라인테스트
- RDS
- 라피신
- AWS
- 체크인미팅
- 전국대학생게임개발동아리연합회
- EC2
- 생활코딩
- UNICON
- Developer
- 설계
- 자바
- 스프링부트
- 프로그래밍
- 인디게임
- 스프링
- 위키북스
- 42서울
- 개발공부
- 백엔드
- 프리티어
- 배포
- 백엔드개발자
- 인프라
- 도커
- 게임개발동아리
- UNICON2023
- CICD
- Today
- Total
목록Study (60)
Hyun's Wonderwall
사용하던 AWS 계정이 프리티어가 만료되었는데, 프로젝트를 12월까지 올려놓기로 해서 새 AWS 계정으로 리소스들을 이전하는 절차를 진행하였다.(프로젝트 구경하기 ➡ https://songpin.kr/)통째로 옮기는 방식이 아니고, 백업본을 다운로드받아 다시 올리는 식이다.열심히 작성했었는데 글을 날려버려서 간단하게 적고, 참고한 글들 링크를 아래에 달아둔다. A계정에서 B계정으로 리소스들을 옮기고자 한다. (*VPC는 새로 세팅했다.)EC2 AMI로 옮기고, 탄력적 IP 전송하기1. A계정에서 EC2를 AMI로 만들어 B계정에 AMI 공유를 해주고, B계정에서 AMI로 인스턴스 생성한다.2. A계정에서 탄력적 IP "전송 활성화"를 하고 B계정에서 탄력적 IP "전송 수락", 새로 만든 인스턴스에 연결..
[Spring Boot] 백엔드 서버 배포하기 - AWS EC2, RDS + Docker + GitHub Actions로 CI/CD🌿0. 시작하기 전에이 글은 AWS EC2, RDS + GitHub Actions + Docker 기술을 사용해 Spring Boot 프로젝트를 배포하는 방법을 차근차근 안내한다. 필자가 야매로 터득한 방법으로, 백엔드 서버를 빠르게 배포하는 방법을 설명하는 데 초점을 맞추고 있다. HTTP 배포하는 법 중심으로 다루며, HTTPS를 적용하는 방법 또한 글 후반부에 소개한다.백엔드 개발자가 혼자 배포를 연습하거나, 프론트엔드 로컬과 통신할 때나, 프론트엔드와 백엔드를 같은 서버로 배포할 때는 HTTP여도 문제없다. 다만 프론트엔드와 백엔드를 따로 배포하는 경우(=3티어 아키텍..
(이 포스팅은 한글 폰트가 원래는 안 깨졌다가 머지 후 갑자기 깨지는 상황에 대한 문제해결을 다룹니다. 폰트를 처음 설치한 후 한글이 깨지는 경우는 다른 이슈이니, 다른 포스팅을 찾아보세요) 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)이 존재한다. 주문이 결제와 강하게 결합되어 있어 영향을 받는 것이다.이벤트를 사용하면 이런 강한 결합을 없앨 수 있다. 특히 "비동기 이벤트" -> 두 시스템 간..
보호되어 있는 글입니다.
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 애그리거트와 트랜잭션 애그리거트의 일관성이 깨지는 문제가 발생하지 않도록 하려면 다음 두 가지 중 하나를 해야 한다. 운영자가 배송지 정보를 조회하고 상태를 변경하는 동안 고객이 애그리거트를 수정하지 못하게 막는다 운영자가 배송지 정보를 조회한 이후에 고객이 정보를 변경하면, 운영자가 애그리거트를 다시 조회한 뒤 수정하도록 한다, 이 두 가지는..