전체 글
-
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를 통해 근처 위도의 식당을 몇개 가져오고, 그 뒤에 랜..
-
Template Method Pattern디자인 패턴 2022. 2. 26. 18:24
해당 책을 통해 공부한 내용을 정리하고 있습니다. 정의 템플릿 메소드 패턴에서는 말 그대로 ‘템플릿’을 제공하는 패턴이다. 예를 들어, 발표를 할 때 약간씩 내용을 수정하면 되는 파워포인트 템플릿등이 있는데 템플릿 메소드 패턴은 이것과 정확히 같은 동작을 한다. 정해져 있는 양식이 있고, 디테일은 서브클래스에서 템플릿 메소드를 구현해 사용하는 방식이다. 책에서 소개하는 템플릿 메소드 패턴의 정의는 다음과 같다. 어떤 작업 알고리즘의 골격을 정의합니다. 일부 단계는 서브 클래스에서 구현하도록 할 수 있습니다. 템플릿 메소드를 이용하면 알고리즘의 구조는 그대로 유지하면서 특정 단계만 서브클래스에서 새로 정의하도록 할 수 있습니다. UML과 구현 한번 UML을 보자. templateMethod는 말 그대로 순..
-
Adapter Pattern디자인 패턴 2022. 2. 25. 10:39
해당 책을 통해 공부한 내용을 정리하고 있습니다. 어댑터 패턴은 말 그대로 ‘어댑터’ 기능을 수행한다. 그렇다면 어댑터라는건 무엇일까? 어댑터는 흔히 생각하는 ‘돼지코’를 생각하면 편하다. 위 사진의 돼지코는 유럽이나 일본 등의 해외 가전을 구매할 때 전압을 변환시켜주는 기능을 하는 가전이다. 다른 기능은 하지 않고 오로지 ‘호환되지 않는’ 전압을 ‘호환 되도록’ 변환 시켜주는 기능을 하는게 어댑터의 역할이다. 어댑터 패턴의 역할 또한 같다. 위와 같이 A라는 시스템이 있고 여기에 추가해야 하는 서브시스템인 B라는 시스템이 있다고 생각해보자. 이처럼 생긴 시스템들을 연결 할 인터페이스가 맞지 않는다고 할 때, 한 시스템을 다른 시스템에 맞추는 방법도 있겠지만, 노동이 많이 들어갈 것이다. 이를 아래와 같..