최종 프로젝트에서 애플리케이션 배포를 위해 GitHub Actions 의 파이프라인을 구축하여 EC2 인스턴스에 Docker 컨테이너를 실행시키기로 했다. 1 기술 채택 GitHub Actions GitHub 저장소를 사용해온 친숙함이 가장 크게 작용 추가적인 설치 필요 없이 GitHub 환경에서 이용 가능 공개 Repository 의 경우 특정 사용시간내에서 무료로 제공 AWS 직접 서버를 설치하고 관리하는 작업 대비 시간과 비용 측면에서 효율적 프로젝트가 불명확한 상태에서 필요한 리소스를 언제든지 늘이거나 줄일 수 있는 유연성, 확장성 온라인/오프라인 상 많은 학습 자료 Docker 애플리케이션의 구성과 종속성을 캡슐화하기 때문에 환경의 일관성을 보장할 수 있는 점 프로젝트에 사용하는 백/DB 를 단..
왕초보일지
1 Open API Open API 는 개발자가 접근할 수 있도록 공개적으로 제공되는 프로그래밍 인터페이스이다. 일반적으로 HTTP 프로토콜을 사용하여 데이터를 주고받으며 REST , SOAP 등 다양한 방식으로 구현될 수 있다. 공개적으로 접근 가능하고 JSON / XML 형식으로 데이터를 교환한다. 개발자는 특정 API 를 사용하여 새로운 애플리케이션을 만들거나 기존 제품에 새로운 기능을 추가할 수 있다. 예를 들어 개발자는 Google Maps API 를 사용하여 개발하는 애플리케이션에서 지도를 표시하거나 위치 데이터를 활용할 수 있고 기상청의 API 를 사용하여 날씨 정보를 얻어 활용할 수 있다. ❓OpenAPI Specification OAS 는 API 디자인에 관한 명세를 말한다. API 의 ..
3주차 마무리, 중간 발표 전 각자 작업물 완료하고 목표치만큼의 전체 테스트를 다같이 수행했다. 오류 작성 페이지를 만들어서 발견한 오류를 기록, 해결상태 표시, 개선 방향을 작성했다. 에러 기록해둔다는걸 잊어서 내용이 부실하다.🤯 1. .env 파일 적용 X .env 파일에서 환경변수를 불러오지 못하고 있었다. 며칠 전에 기존에 사용하던 라이브러리에서 implementation("me.pqulschwarz:spring-dotenv:4.0.0") ⬇️ implementation("io.github.cdimascio:dotenv-java:3.0.0") 직접 호출이 가능한 cdimascio 라이브러리로 교체를 했었다. 그 이후로는 컨테이너 안에서 직접 파일을 작성해넣었기 때문에 로컬에서 문제가 일어난 줄은 ..
🚩배경 CI 연습을 하는 중에 build 를 할 때 @SpringBootTest 어노테이션이 yml 의 설정 정보를 읽어오지 못하는 문제가 발생했다.( 아래의 build 에러 로그와 동일한 contextLoads() Failed 에러 발생) 클래스를 직접 명시해줌으로써 해결은 되었지만( @SpringBootTest(classes=[ToDoListApplicationsTest::class]) ) 실제로 실행될 때 잘 읽어올 수 있는게 맞는지 의문과 불안감이 들었다. 그래서 다른 분이 동일한 오류를 겪고 .env 로 설정 정보를 관리한다길래 나도 똑같이 .env 를 활용하여 CI 를 해보기 앞서 잘 적용이 되는지 ec2 배포를 테스트해보았다. 스프링 부트 3.2.2 aws ec2 ubuntu jdk17 🚩문..
오늘 한 일 gitgub repository 생성, 템플릿 추가 ERD 수정 ERD 를 수정하다가 든 생각 그동안 연관관계를 생성할 때 별 고민없이 식별관계로 설정해놓았는데 식별관계와 비식별관계의 차이점을 정확하게 구분하고 가야지 ERD 설계를 제대로 하는 것 아닌가 하는 생각이 들었다. ERD Cloud 를 기반으로 식별관계는 파란색 키, 비식별관계는 분홍색 키로 나타난다. 식별관계 : 부모 테이블의 기본키/유니크 키를 자식 테이블이 자신의 기본키로 사용 : 반드시 부모 테이블에 데이터가 존재해야 자식 테이블에 데이터를 입력할 수 있다 : 부모 데이터가 없다면 자식 데이터는 생길 수 없다. : 요구 사항이 변하지 않을 때 강력한 정합성 보장 비식별관계 : 부모 테이블의 기본키 또는 유니크 키를 외래 키..
최종 전 마지막 프로젝트 끝... ec2 서버 접속, 레디스 적용, 캐시전략, nGrinder 성능 테스트 등 짧은 프로젝트 기간 동안 많이 배웠다. 뭐든 기록하는 습관을 들여야 남는게 있을 것 같다. 그리고 무슨 기술이든 사용하는 이유, 근거가 충분해야지 의미가 있다. 최종 프젝 전 주말동안 밀린 강의 듣고 책 첫 장 한 번 보고 해야 할 일 정리해야지!!!! properties 속성으로 중요 데이터 값 참조하기 ~.yml 파일에 있는 값을 다음과 같이 Properties 클래스를 만들어 가져오고 Config 에서 명시해준다. @ConfigurationProperties(prefix = "spring.data.redis") class RedisProperties( val host: String, val..
뭔가 이것저것 해보려다가 아무것도 못한 사람됨....울적해지지말고 많이 보고 배우면서 힘내자 🐳🐳🐳 오늘 한 일 -ec2 rds 에 dummy 데이터 넣어보기 -> 인텔리제이에서 쿼리 콘솔을 처음 사용해봤다! 쿼리 보낸 내역과 그 결과를 한 눈에 볼 수 있는게 신기했다! (mysql 은 다운받았다가 인텔리제이랑 연결이 잘 안돼서 일단 삭제함) -캐시 흐름 이해하기 + 스케줄러 기능 -ElasticCache 가 무엇인가 🫧 팀원의 캐시관련 스케줄러 코드 // keyword 캐시 10분 단위로 db에 저장 후 삭제 @Transactional @Scheduled(fixedDelay = 1000 * 60 * 10) fun flushAllCache() { // 캐시에서 순위 정보 가져옴 zSetOperations..
값이 쌍따옴표와 함께 저장됨 => Serialization 문제를 해결하기 위해 잠깐 적용해봤었던 GenericJackson2JsonRedisSerializer 으로 인한 현상이었다. 저장된 캐시를 가져올 때 생겼던 SerializationException: Could not read JSON: Cannot construct instance of "org.springframework.data.domain.SliceImpl" 직렬화 과정에서 SliceImpl 생성자가 없는 문제?? 직렬화/역직렬화 문제는 SliceImpl 을 구현한 CustomSliceImpl 을 팀원이 직접 만들어서 해결했다. class CustomSliceImpl @JsonCreator(mode = JsonCreator.Mode.PRO..
문제 redis value에 쌍따옴표가 같이 들어감 -> 재설치 해보고도 안되면 request param 으로 받기 문제 keyword search 시 직렬화예외발생 => 페이지네이션+ 문제같음 내 문제 ngrinder 테스트 ec2 환경에서 ngrinder 실행 어떻게 한거지?? 프로젝트를 따라가고있지 못하는 것 같다.... 내일 할 일 redis 삭제 재설치 하고 저장되는거 다시 확인
인텔리제이에서 스프링 부트와 Redis 를 연결하고 Sorted set 자료구조를 이용해 인기 검색어 순위를 저장하고 조회하는 테스트를 해봤다. spring boot kotlin redisTemplate Redis 설정 1 설치 redis 설치가이드 2 dependencies implementation ("org.springframework.boot:spring-boot-starter-data-redis:2.3.1.RELEASE") 3 인텔리제이 데이터베이스 연결 4 application.yml 설정 (로컬) spring: data: redis: port: 6379 // 기본 포트 host: localhost 5 RedisConfig package com.sparta.bubbleclub.global.co..