개발로그
-
JPA 초기화 전략개발로그/오늘뭐먹지 프로젝트 2023. 1. 5. 18:23
DB 초기화의 필요성을 느낀건 Review 기능을 개발하던 도중 테스트를 진행할 때였다. 다른게 아니라 Review 테이블의 PRIMARY KEY인 id 필드가 AUTO_INCREMENT로 설정되어있었는데, my_sql의 AUTO_INCREMENT의 설정은 만약 데이터를 삭제하더라도 무조건 다음 아이디를 뱉어내도록 설정되어 있었기에 findById 기능을 수행하던 도중 계속해서 문제가 터졌다. 이를 테스트 DB에 있는 Review 테이블을 아예 삭제했다가 다시 생성하면 정상적으로 동작하지 않을까 싶어서 구글링을 진행했고, 긴가민가 했던 내용도 많았기에 후에 까먹지 않기 위해 기록해두기로 결정했다. Hibernate 전략 application.yml의 설정을 변경해서 수정할 수 있다. spring.jpa...
-
Selenium을 이용한 크롤링개발로그/오늘뭐먹지 프로젝트 2022. 12. 23. 18:53
0. 크롤링 이유 현재 만들고 있는 앱에 현재 위치와 DB를 기반으로 식사를 추천해주고, 추천된 데이터를 HTML로 뿌려주는 항목이 있었다. 뿌려주기를 원하는 데이터는 식당의 이름, 위치, 메뉴, 리뷰, 이미지 등이 있었는데 문제가 하나 있었다. https://www.data.go.kr/ 공공데이터 포털 국가에서 보유하고 있는 다양한 데이터를『공공데이터의 제공 및 이용 활성화에 관한 법률(제11956호)』에 따라 개방하여 국민들이 보다 쉽고 용이하게 공유•활용할 수 있도록 공공데이터(Datase www.data.go.kr DB를 채워넣을때 위의 공공 데이터 포털을 이용해 데이터를 채워넣었는데 해당 사이트가 제공하는 데이터에는 식당의 메뉴, 리뷰, 이미지등이 포함되어있지 않다는 문제가 있었다. 이를 해결하..
-
구조 리팩토링 - 테스트 DB 분리, 메시지 분리개발로그/오늘뭐먹지 프로젝트 2022. 10. 19. 01:27
1. 테스트 DB 분리 2. 메시지 분리 테스트 DB 분리 테스트에는 중요한 원칙이 두가지가 있다. 1. 테스트는 다른 테스트와 격리해야 한다. 2. 테스트는 반복해서 실행 할 수 있어야 한다. 이 중에서 첫 번째 조건은 잘 지키고 있었지만 두 번째 조건인 반복 실행에서 문제가 있었다. 메인 데이터 베이스를 하나만 사용하기에 기존 데이터 베이스에 있는 데이터들이 테스트에 방해가 되고 있었다. 즉 테스트가 원래 코드와 완전히 분리가 되지 않은 상황이라 어찌 해결할지 고민했었다. 해결책을 몇 가지 알아봤었는데 Test DB를 아예 분리하여 사용하는 방법이 마음에 들었고, 이 방법을 알아봤다. 몇 가지의 방법이 있었는데, 첫 번째로는 그냥 말 그대로 지금 사용하는 mariaDB에 새로운 데이터 베이스를 사용하..
-
CI/CD개발로그/오늘뭐먹지 프로젝트 2022. 4. 6. 19:56
이제까지 개발을 할 때 로컬 환경에서 개발 -> 깃허브에 푸쉬 -> EC2에서 빌드하는 방식으로 진행되었다. 그런데 이 과정에서 문제가 있었다. 로컬 환경은 HTTP 환경으로 돌아가고 있었고 EC2에서는 HTTPS에서 돌아가고 있어서 로컬 환경에서 개발한 파일이 EC2에서 맞지 않는 경우가 다반사였다. 이에 따라 수많은 버그가 발생되었고, 이를 근본적으로 해결해야겠다는 생각이 들었다. 우선 해야 할 일들을 생각해봤다. 첫 번째로, 로컬 환경을 HTTPS 개발 환경으로 바꾸어 EC2에서의 배포 환경과 일치시켜야 할 필요성을 느꼈다. 두 번째로, 깃허브에 푸쉬를 하면 자동으로 개정된 내용에 맞게 배포가 되었으면 좋겠다는 생각이 들었다. 그래서 각각을 작업했고, 오늘에 와서야 해당 작업들이 마무리 되었다. 로..
-
AWS 배포개발로그/오늘뭐먹지 프로젝트 2022. 3. 31. 14:34
드디어 AWS 배포를 마무리했다. 빨리 끝날줄 알았는데 정말 많은 버그들을 겪다보니 생각보다 훨씬 오래 걸렸다. HTTP 환경에서 HTTPS 환경으로 넘어가는데 처음 경험해보는 환경이다보니 많은 시행착오와 삽질이 있었지만 그래도 결국에는 구현해냈다! 버그를 잡아내 정상적으로 구동됐을때 얼마나 기뻤는지 모른다. 이 마음이 식기전에 만든것들을 한번 정리해보려고 한다. 서버 구성 프론트쪽의 구성도다. HTTPS를 활용하기 위해서 도메인을 구매했고, 이 도메인에 ACM을 활용해 인증서를 발급받아 HTTPS로 구성했다. 로드밸런서를 통해 80포트로 들어온 요청은 443포트쪽으로 리다이렉트 시켜 HTTPS를 사용하도록 했고, 기존 리액트는 NGINX에 올려 요청을 처리하도록 했다. 백앤드의 구성도다. 프론트쪽에서 ..
-
메인 기능 구현 완료개발로그/오늘뭐먹지 프로젝트 2022. 3. 10. 18:41
바뀐 부분 사실 메인 기능 자체는 작년에 전부 구현했었는데 포스팅을 올리지 않다가 이왕 시작한 로그니 끝까지 써보자 해서 늦게나마 올리게 되었다. 바뀐 부분이 몇몇 있다. 첫 번째로는 식당들을 크롤링하여 사용할 것이라는 당초의 계획과는 달리, 카카오에서 제공해주는 API의 기능들을 사용하기로 했다. https://developers.kakao.com/docs/latest/ko/local/dev-guide#search-by-keyword Kakao Developers 카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다. developers.kakao.com HTTP를 통해 근처 위도의 식당을 몇개 가져오고, 그 뒤에 랜..
-
MVC VS FLUX VS REDUX개발로그/오늘뭐먹지 프로젝트 2021. 10. 13. 14:16
이번 프론트 앤드에서 사용해볼 후보군을 추려봤고 주로 MVC, FLUX, REDUX 아키텍쳐가 쓰인다고 한다. 1. MVC 아키텍쳐 1.1. MVC 아키텍쳐 개요 3개의 레이어로 이루어진 아키텍쳐 패턴으로 유저에게서 요청받을때마다 적절한 Model과 View를 활용해 응답한다. Model: 앱의 데이터 및 동작을 유지, 관리한다. View: 모델의 UI를 표기한다. Controller: View와 Model 컴포넌트 간의 인터페이스 역할을 담당한다. 2. FLUX 아키텍쳐 2.1. FLUX 개요 2014년경 페이스북의 업데이트를 앞두고 페이스북에서 개발된 아키텍쳐 다음과 같은 요소를 포함한다. Store/Stores: 앱의 state와 로직등을 저장하는 컨테이너 Action: Dispatcher에게 데이..
-
백앤드 프로토타입 완성개발로그/오늘뭐먹지 프로젝트 2021. 10. 13. 14:01
프로토타입 완성 회고 https://github.com/KwangJongJeon/whatShouldIEatTodayBackProto GitHub - KwangJongJeon/whatShouldIEatTodayBackProto Contribute to KwangJongJeon/whatShouldIEatTodayBackProto development by creating an account on GitHub. github.com 드디어 프로토타입 완성했다! API를 통해 통신하는데에 이런저런 문제가 많이 생겨서 내가 생각하던 것보다는 더 오래 걸렸다. 이번 프로토타입을 만들면서 느꼈던 문제점들은 다음과 같다. 첫 번째로, 이번 프로토타입을 만들면서 가장 많이 느꼈었던건 내가 했던 설계가 상당히 부실했다는 것..