우선 프로젝트를 진행할 당시 공모전 단체에서 클러스터를 제공해줬기에 클러스터 생성은 내가 하지 않았다. 이후에 공부할 겸 한 번 직접 만들어봤는데 https://dev-gallery.tistory.com/66 이 블로그를 보고 하니 잘 됐다. 또 공모전이 끝난 지금
내부 서비스 통신 필요성 msa 구조는 말그대로 마이크로서비스로 나누어져 있기에 각 서비스끼리 통신하기 위해서 모놀리식과 다른 방법이 필요하다. 모놀리식 방식에서는 필요한 서비스 계층의 클래스를 주입받아 사용하면 되었지만, 서비스가 분리되면 그 방식이 불가능하다. 그래서 다른 서비스에게 api 요청을 하고 그 응답을 받아 사용해야 한다. 외래키 저장 더...
애플리케이션에 문제가 생겼을 때, 문제가 발생한 원인을 찾기 위해서는 로그를 확인해보아야 한다. 어느 시점에서 어떤 요청이 있었고, 어떤 것이 실행되었는지 그런 것들을 로깅해야한다. msa구조에선 apigateway를 통과해도 내부 서비스로 가는 과정에서 오류가 생길
Spring Security? msa구조에서는 모놀리식과 다르게 Spring Security를 사용하기 어렵다. 우선 서비스 별로 세션을 공유할 수 없기에 세션 방식은 구현이 불가능하다. 그래서 필연적으로 토큰 방식을 사용해야하는데 Security의 필터체인을 사용하려
문제를 풀고 다른 사람들의 코드로 더 적합한 방법이 있나 찾아보았는데, 다들 compare을 오버라이딩해서 문제를 풀었다는 사실을 알 수 있었다.틀린 방법은 아니지만 나는 직관적으로 이해하기 어려웠고, 내가 푼 방법이 적혀있지 않은 것 같아서 내 코드를 공유해보고자 한
common 모듈 - 사용 이유 모놀리식 구조에서는 서비스들이 들어가는 도메인말고 common 폴더를 만들어 공통적으로 필요한 코드들을 구현하였다. 예를들어 일관된 응답 형식을 위한 apiResponse, 전반적으로 터지는 예외를 처리해주는 GlobalExcepti
이전 게시물에서 간단하게 msa의 특징을 적어보았다. msa에서는 각 서비스가 독립적으로 존재하기에, 그 서비스들을 연결해주는 서비스와 프론트가 요청을 보낼 서버가 각각 존재한다. 이것들을 구현하는 작업을 기록해보려고 한다. Gateway gateway 사용 이유 마이

클라우드 네이티브란 클라우드 환경에서 애플리케이션을 구축, 배포 및 관리하는 것을 뜻한다. 예전에는 서버를 직접 사서 관리했지만, 오늘날에는 AWS같은 클라우드를 활용한다. 즉 모놀리식(기존 방식)보다 클라우드 친화적인 방법이 클라우드를 사용하는데 더 유리하다.출처:
채팅 기능이 각종 앱에서 다양하게 쓰이기 때문에, 스프링 + 웹소켓을 활용하여 채팅 기능을 만들어보면 좋을 것 같아 공부중이다. 그 과정에서 왜 이렇게 만들었고, 어떤 개념들이 있는지 정리해보고자 한다. 0. 요구사항 채팅기능을 만들면서 어떤 기능들을 넣을 것인가
정적 팩토리 메서드 참고 블로그정적 팩토리 메서드를 활용하면 생성 목적에 대해 이름지을 수도 있고, 객체의 생성을 제어할 수 있다.구현하고 있는 것은 채팅시스템의 채팅 방 엔티티 코드이다.당장 필요한 것은 방의 사용자 리스트뿐이기에 이렇게 private 생성자를 만들어
문제를 보고 HashMap을 활용하면 풀 수 있겠다는 생각을 하여, 문제를 푸는데는 어려움이 없었다.정답을 맞추고 다른 사람의 코드들을 살펴보니 대부분이 아스키코드를 활용하여 풀어낸 것을 보고 이렇게 풀어낼 수도 있구나 라는 생각을 했다. 하지만 내가 푼 방법이 대체로
개발을 본격적으로 들어가기 전에 기존에 보던 인강을 마무리하고 개발에 들어가고 싶어서 강의록을 가지고 이해하고 이해가 안되는 부분만 인강을 보는 식으로 빨리 진행하였다.그러던중 동적 query에 대한 부분이 있었는데, 이 부분에 대해서 자세히 나오지 못해 아쉬웠다. 강
기획명세서를 작성하고 다음엔 백엔드 레포지토리 초기 세팅, 그리고 erd 설계를 진행했다.또 도커를 써보라는 선배의 조언에 도커 공부를 하고 개인 프로젝트에 연결해보는 과정을 진행해보았다.도커를 연결하고 mysql을 다뤄보고 있었는데, 기초데이터베이스 수업에서 배운 G
application.properties에 데이터베이스 주소와 비밀번호등을 올린 후 깃허브에 올리면 안되지 않나? 디비 교수님이 강조한 보안의 중요성 (지난 프로젝트에서 내가 얼마나 부족했던지 알게 된 부분이다. 각종 비밀번호가 깃허브에 올라가있다.. 그 이외에도 모종의 이유로 레포지토리를 private 해놓을 수 밖에 없었다) 그래서 Docker를 활용...
프로젝트를 진행하면서 가장 재미없는 것이 기획인 것 같다.늘 기획단계에서 많은 문서를 남겨야 했었고, 이번 프로젝트는 더더욱 제대로 해보고 싶기에 또다시 문서 지옥에 빠질 것을 생각하면 벌써부터 아찔하다.첫 빌딩과 코어타임을 가지고 우리 팀의 주제는 구체화되었다.인강사
3주차 개념 열거형(enum)은 요소라 불리는 명명된 값의 집합을 이루는 자료형이다. (상수 데이터들의 집합이라고 생각하면 된다)자바에서의 enum은 인터페이스와 같이 독립된 특수한 클래스이다.장점:코드가 단순해지며 가독성이 좋아짐혀용 가능한 값을 제한함 → 유형 안전
VO(value object) : 값을 표현하는 객체 int, float 이렇게 변수 하나를 선언하는 것이 아닌 객체는 여러 개가 들어갈 수 있음또 final로 설정해서 처음부터 값이 변하지 않도록 설정할 수 있음(상수)→ 생성된다면 불변하며 확실한 값을 가지고 있기에
장고로 프로젝트를 해본 경험뿐이었기에, 또 한국에서 개발자로 살아남기 위해 스프링으로 프로젝트 트랙을 지원하고 시작하게 되었다. 1주차 과제는 크게 두 가지였다. 객체지향과 인터페이스 알아보기, 또 자바를 사용하여 턴제 게임 구현하기.객체 지향이란 특정한 기능을 가진
쉽게 풀 수 있을 것 같았는데 생각보다 많이 틀린 문제이다,, 구글에 파이썬 풀이가 안나와서 직접 써보기로 했다 틀린 이유는 특정 사이즈의 티셔츠를 신청한 사람이 0명일 수도 있다는 것,, 위만 알고 있으면 쉽게 풀 수 있을 것 같다

로컬에서는 따로 env파일을 만들어서 OPENAI KEY를 보관하고 이를 .gitignore에 올려 github등으로 올라가지 않게 설정해두었다. 그래서 EC2에서 배포할 때 위와 같이 OpenAI key를 찾지 못해 에러가 발생하였다. 그래서 새로 가상환경 내에서 .