-
[Briefing] Flyway로 DB 스키마 형상 관리하기 - 2Project/Briefing 2024. 3. 9. 15:04
📝 지난 포스팅 ➡︎ Flyway로 DB 스키마 형상 관리하기 - 1 [Briefing] Flyway로 DB 스키마 형상 관리하기 - 1 Briefing 프로젝트를 진행하는 과정에서 엔티티간 매핑 변동으로 인해 DB 스키마 수정이 필요하게 되었다. 초기 개발 단계가 아닌 런칭이 된 서비스고 실사용자가 존재하기 때문에, 기존 데이터를 suddiyo.tistory.com 지난 포스팅에서 Flyway의 자동 원리를 알아봤으니 이번 포스팅에서는 간단한 예제를 통해 마이그레이션 테스트를 진행할 것이다. 최대한 프로젝트 환경과 비슷하게 진행하기 위하여, TeamMember라는 중간 테이블을 통해 매핑되어있는 N:N 관계의 Team과 Member를 flyway를 통해 N:1 관계로 마이그레이션하는 실습을 진행해보자 ..
-
[Briefing] Flyway로 DB 스키마 형상 관리하기 - 1Project/Briefing 2024. 3. 8. 18:12
Briefing 프로젝트를 진행하는 과정에서 엔티티간 매핑 변동으로 인해 DB 스키마 수정이 필요하게 되었다. 초기 개발 단계가 아닌 런칭이 된 서비스고 실사용자가 존재하기 때문에, 기존 데이터를 마이그레이션 해야하는 불가피한 상황이 왔다. 이런 상황에서 수작업으로 데이터를 일일이 마이그레이션 하는 건 비효율적이라고 판단하여, 데이터베이스 버전 관리를 위해 Flyway 라이브러리를 도입하게 되었다! 🔍 Why Flyway? 데이터베이스 형상 관리를 하는 툴로는 주로 Flyway, Liquibase가 많이 사용되고 있다. Liquibase는 다양한 포맷을 지원하고, 스냅샷을 지원하는 등 여러 환경에서의 형상 관리를 유연하게 다룰 수 있게 도와준다. 반면, Flyway는 설정이 매우 간단하고 Java 생태계..
-
[Spring] Kafka 채팅 기능 구현 - 1Spring 2023. 12. 19. 04:21
🛠️ 기술 스택1️⃣ WebSocket & STOMP실시간 양방향 통신을 위해 WebSocket을 선택했다.WebSocket 상에서 STOMP 프로토콜을 사용해 메시징의 형식과 규약을 관리할 것이다. 2️⃣ Apache Kafka대규모 메시지 처리를 위해 Kafka를 선택했다.Kafka는 높은 처리량을 감당할 수 있는 데다가 데이터를 신속하게 처리하는 데 이상적이다.RabbitMQ를 사용해도 충분히 채팅을 구현할 수 있지만, 이번에는 Kafka를 사용해보기로 결정했다! 3️⃣ MongoDB채팅 메시지 저장소로 사용할 것이다.NoSQL 데이터베이스로, 채팅 메시지와 같은 비정형 데이터를 관리하기에 적합하다.또한 수평적 확장성이 뛰어나 대량의 데이터를 효율적으로 처리할 수 있어서..
-
[Python] googletrans 'NoneType' object has no attribute 'group'Etc 2023. 11. 3. 23:57
❗️ 문제 main script를 실행하면 gpt까지는 정상 작동 되는데, 달리한테 보내기 전 translate 과정에서 오류가 발생하였다. 이를 해결하고자 test.py 파일을 작성하여 테스트를 진행했고 동일한 오류를 만났다. 🔎 error log File "/Users/ahnsugyeong/Desktop/2023/FlowerLab/flowerlab-model/main.py", line 35, in t = trans(i) File "/Users/ahnsugyeong/Desktop/2023/FlowerLab/flowerlab-model/translate.py", line 5, in trans result = trans.translate(text, dest='en') File "/Library/Framew..
-
[Python] OpenAI API Secret Key 관리Etc 2023. 11. 3. 23:50
🤔 Git을 활용한 OpenAI API 시크릿키 관리 openai의 시크릿 키가 유출되면 수많은 문제를 야기할 수 있다. git으로 협업을 진행할 때 이 시크릿 키를 어떻게 관리하는 게 좋을까? 🔎 전체 프로젝트 구조 . ├── README.md ├── dall_e_2.py ├── gpt_turbo.py ├── json_parse.py ├── main.py ├── secrets.json ├── secrets_manager.py └── translate.py 1️⃣ secrets.json 생성 secrets.json { "SECRET_KEY": "openAI secret key" } 위와 같이 Json 형식에 맞게 secrets.json 파일에 SECRET_KEY를 저장해 준다. 2️⃣ .gitignore..
-
[QueryDSL] QueryDSL에서 조인 시 주의사항 | 객체 그래프 탐색Spring 2023. 10. 22. 19:56
QueryDSL에서 groupBy를 사용하는 예제를 공부하던 중, '왜 이렇게 조인을 해야하는지'에 대한 의문을 가지게 되었다. 🔍 기본 조인 방식 먼저, 기본적인 조인 방식을 살펴보자. List result = queryFactory .select(team.name, member.age.avg()) .from(member) .join(member.team, team) .groupBy(team.name) .fetch(); 이 코드는 member 테이블을 기반으로 team 테이블과 조인하는 방식으로 작성되었다. from 절에는 member를 시작점으로 설정하고, join에서는 member와 연관된 team을 찾기 위해 (member.team, team) 파라미터를 사용했다. 이러한 방식은 member가 t..
-
네이버클라우드 살펴보기 ☁️Etc 2023. 10. 13. 22:37
☁️ 네이버클라우드 NAVER CLOUD PLATFORM cloud computing services for corporations, IaaS, PaaS, SaaS, with Global region and Security Technology Certification www.ncloud.com 네이버클라우드는 대한민국의 주요 IT 기업인 네이버가 제공하는 클라우드 서비스 플랫폼이다. 전세계적으로 클라우드 시장이 확장되고 있는 가운데, 국내 기업의 눈높이에 맞춰 제공되는 서비스로 많은 주목을 받고 있다. 또한, 삼성, IBK 기업은행, 농협은행, 서울대학교, NEXON을 포함한 다양한 비즈니스와 산업으로 구성된 90,000개 이상의 기업에 안정적인 클라우드 서비스를 제공하고 있다. 네이버 클라우드는 컴퓨팅..
-
[AWS] EC2 프리티어 메모리 부족 문제 | Swap 메모리 설정AWS 2023. 9. 29. 21:47
❗️ 문제 AWS EC2 인스턴스를 생성한 후, ssh에서 프로젝트를 clone하여 빌드를 진행했으나 10%에서 멈추는 현상이 발생하였다. ./gradlew test —debug 위 명령어를 통해 디버그 모드를 실행한 결과, 'installReact' task에서 메모리 문제가 발생한 것을 확인할 수 있었다. 📃 에러 로그 .. (생략) .. 9-29T17:04:50.425+0900 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Releasing lock on daemon addresses registry. 2023-09-29T17:04:51.121+0900 [DEBUG] [org.gradle.cache.internal.DefaultFileLoc..