i18n을 위한 데이터베이스 설계 고민하기
2023. 10. 28. 19:43
TIL/트러블슈팅
i18n 데이터 설계 db → 서버 → 프론트 구조에서 데이터베이스에 있는 언어를 준비해야하기 때문에 언어 자체를 백엔드에서 정의해서 주는게 아니라 데이터베이스에서 번역이 되어 저장되야한다. db 테이블을 title | enTitle | … 이렇게 확장하는게 옳은 방식인가 고민해보게 되었다. 데이터베이스의 언어 데이터값을 어떻게 관리할 수 있을까싶은 생각에 우리가 사용하는 프로젝트와 맞는 방식을 고민하게 되었다. 데이터베이스 저장 방식 열 기반 저장방식 가장 간단한 방법으로 각 언어에 대응하는 열을 추가하는 방식입니다. 장점 구현이 간단 단점 확장이 어렵다 지원하는 언어가 늘어나거나 속성이 추가된다면 그에 대응하는 만큼 확장이 필요하므로 관리, 확장이 어렵다 스키마 업데이트가 필요하며 쿼리가 복잡해진다 ..
이미지 전달과 저장 고민 / 클라우드 아키텍쳐 구조
2023. 8. 5. 11:32
TIL/트러블슈팅
Strapi 설계 정리 컬렉션 → 여러 데이터를 가지는 모델 → 레스토랑[이름, 카테고리], 포스트[제목, 내용] 싱글 → 단일 데이터만 가지는 모델 → 웹 - 웹소개 컴포넌트 → 재사용 가능한 모델 → 포스트, 리뷰, [제목, 내용] 이미지 저장 & 전달 방식 저장될 이미지가 많기 때문에 클라우드 상에서 확장과 데이터 보존을 위해 s3 버킷을 활용한다. 이때 버킷은 비공개 상태로 유지하고자 한다. 이미지 저장 방식 비공개된 버킷에 접근하기 위해서는 권한이 필요하다. 하지만 권한을 클라이언트 측에서 사용하고자하면 악의적인 유저에게 권한과 엑세스키를 다 털릴 수 있기 때문에 함부로 권한을 설정할 수 없다. 보안을 챙기면서 권한을 설정하고자하면 역할이 서버에서 할당되어야 하며 클라이언트 → 서버 → 버킷으로..
CI/CD 구성하면서 발생한 문제들
2023. 8. 1. 14:47
TIL/트러블슈팅
에러 https://github.com/strapi/strapi/issues/13975 계속 빌드-배포 스크립트만 수정했는데 왜 에러가 발생했는지 잘 모르겠다. 캐시를 지우고 다시 빌드하니 또 성공적으로 수행되었는데, 에러로 인한 중단이 발생하지 않은 것을 보아 추가적인 처리가 필요할 것처럼 보인다. 빌드 최적화 빌드시 4분정도 걸린다. action script → 빌드 → 실행 → SSH 연결 → 빌드 → 실행 순으로 이루어진다. 아무래도 컴퓨팅 성능이 좋지않다보니 시간을 많이 잡아먹기때문에 빌드를 한번으로 줄이거나 다른 패키지 캐싱을 통해 조절하는 것도 좋아보인다. 상태 비저장 배포를 간단하게 하기 위해 빌드를 action에서 한번만 수행하고 해당 파일을 전송하는 scp 스크립트를 구성했다. 하지만 ..
KPT 회고로 프로젝트 실패 회고하기
2023. 4. 1. 23:10
TIL/트러블슈팅
개요 최근 개인프로젝트를 중단하고 뭘 잘못했었는지 회고해보자는 생각에 여러 발표들과 글을 읽으면서 회고 방식에 대해 고민해봤다. 회고하는 방법은 많았지만 그 중에서 KPT회고가 내가 뭘 잘못했고 잘했는지 구조있고 명확하게 정리할 수 있을거 같아 KPT로 프로젝트를 왜 실패하게 됐는지, 왜 그렇게 생각했고 중단했는지 정리해봤다. KPT 회고란 무엇인가? https://brunch.co.kr/@jinha0802/35 https://techblog.woowahan.com/2677/ 왜 프로젝트를 하게 됐는지? 아침마다 여러 회사들의 기술 블로그를 보면서 편하게 블로그 링크를 모아놓고 쉽게 관리할 수 있도록 하면 좋지않을까 생각해봤다. 크롬 북마크를 조금 더 편하게 사이트를 저장하고 디자인을 추가해서 관리할 수..
클라이언트와 서버 포트로 인해 발생했던 보안 그룹 문제
2023. 3. 27. 22:03
TIL/트러블슈팅
개요 배포하고 조금씩 수정하면서 만져보던 중 초기 연결 1.3분이라는 말도안되는 현상을 발견했다. 하지만 초기 연결만 그렇고 한번 연결되면 통신 속도는 지극히 정상적으로 보였다. 아무래도 tcp로 서로 연결되어 그런건가 생각하고 해결책을 고민해봤다. 해결 chatGPT에 질문하고 하나씩 해결해보고자 했다. 서버 로그 확인 서버 로그를 확인한다는게 뭔지 잘 몰라서 배포되어있는 Nginx로그를 살펴봤다. [26/Mar/2023:00:45:02 +0000] "GET / HTTP/1.1" 404 63 "-" "Linux Gnu (cow)” [26/Mar/2023:01:09:31 +0000] "" 400 0 "-" "-” 이걸보고 성능 문제라고 (잘못) 생각해서 http/1.1이 아닌 http/2를 활용해야하는건..
NestJS 코드 리팩토링 하기
2023. 3. 21. 23:23
TIL/트러블슈팅
개요 기존의 코드가 너무 복잡했다. 왜냐하면 NestJS를 사용하기위해 30분짜리 사용법만 익히고 나머지는 사용하면서 익혀보자는 마음에 들어갔다. 그렇게 들어갔을 때 문제를 만날때마다 찾아보면서 작업할 필요가 있었는데 그 당시엔 일단 동작하게 만들자는 마음가짐으로 똑같은 구성의 중복되는 코드를 이곳저곳 붙여 사용하게 되었다. 그렇게 사용하다보니 한 곳을 수정했는데 다른 곳에서 같은 로직이 발견되고 하다보니 어지러워졌다. 따라서 어영부영 넘어간 부분을 조금 수정하고자 리팩토링을 하기로 했다. GitHub - bjc1102/clipplanet-server: clip-planet-server clip-planet-server. Contribute to bjc1102/clipplanet-server develo..
subdomain 설정이 안됐던 이슈
2023. 3. 18. 22:59
TIL/트러블슈팅
요약 DNS는 결국 IP 주소를 사람이 이해하기 쉽고 기억하기 쉬운 도메인 이름(예: www.example.com)으로 변환하는 시스템이다. 가비아에서 저장된 도메인을 구글 네임서버로 등록시켜서 사용했기에 이후 서브도메인을 추가했지만 연결되지 않았다. 구글 네임 서버로 연결시켜놨으니 문제가 발생했던 것이고 클라우드 IP를 A 레코드로 가비아에서 등록시켜놓으니 문제가 사라졌다 개요 이전글에서 연결된 문제였다. 프론트 백엔드간 배포시 쿠키 저장이 안됐던 이유 - TIL 개요 서버와 클라이언트간 쿠키가 제대로 저장되지 않았다. 옵션을 전부 추가해보고 빼보기도 하다가 쿠키 전송 옵션 중 도메인 옵션때문이라는 것을 깨닫고 계속 설정해봤다 하지만 다른 도메 choiblog.tistory.com DNS 설정을 한 후..
프론트 백엔드간 배포시 쿠키 저장이 안됐던 이슈
2023. 3. 16. 22:32
TIL/트러블슈팅
개요 서버와 클라이언트간 쿠키가 제대로 저장되지 않았다. 옵션을 전부 추가해보고 빼보기도 하다가 쿠키 전송 옵션 중 도메인 옵션때문이라는 것을 깨닫고 계속 설정해봤다 하지만 다른 도메인 간 쿠키 설정 관련해서 문서들을 보고 전부 시도해봐도 안되는 것을 확인하고 다른 방법을 조금 더 고민해봤다 해결 내 프론트 도메인은 https://clip-planet.vercel.app/ 이었고 서버 도메인은 https://clip-planet.site 였는데 이때 clip-planet만 넣어도 되지않을까 생각해서 진행해봤지만 당연히 되지 않았고 계속 붙잡고 있을 순 없어 어떤 방식으로 설정해야하는지 문서를 찾아 읽었다. DNS 정보를 어디다 저장하고 어떻게 캐싱하는지 이미지로 쉽게 이해할 수 있었고 단순하게 도메인 네..
쿠키 저장 이슈를 통해 정리한 쿠키 옵션과 HTTPS로 리디렉션
2023. 3. 14. 22:15
TIL/트러블슈팅
개요 서버를 배포하고 나서 로그인을 시도해보던 중 에러가 발생했다. Google OAuth를 사용하면서 원본 url이나 리다이렉트 url을 제대로 설정하지 않아서 생긴 오류인줄 알았는데 정상적으로 유저 정보도 저장되며 리다이렉트 url까지 문제없이 저장되고 있었다. 하지만 로그인을 확인하는 쿠키를 읽을 수 없어 발생했던 문제였고 구글 로그인과 유저 정보 저장까지 로그인 로직은 수행되는데 쿠키 정보만 저장되지 않는다는 것을 확인하고 쿠키 정보를 찾아보았다 네트워크 탭에 를 확인해보면 Set-cookie를 통해 쿠키가 만들어져서 들어오는 것을 확인했지만 저장이 되지 않았다. 이후 구글링을 해보았고 문제는 다음과 같았다 쿠키 옵션 [프로젝트] Cookie의 옵션 Cookie 쿠키는 브라우저에 데이터를 저장하기..
Docker, Docker-compose를 사용하여 NGINX + 서버 + DB 구축했던 삽질기
2023. 3. 9. 22:30
TIL/트러블슈팅
개요 CI/CD를 위해 여러 설정을 만져보면서 여러 자료들을 참고했다. GCP에서 5000번 포트를 열어서 서비스를 실행 하고 있었는데 보안적인 문제나 성능적인 문제도 신경쓰이고 웹서버에 빠지지않는 nginx도 추가해보고 싶어서 공부할 겸 간단한 설정과 함께 추가해보려했다. 구조를 고민하던 중 기존에 docker로 설정해두었고 추가로 production 환경을 구분하려고 해서 Nginx를 같이 컨테이너로 띄우는 것을 목표로 했다. NGINX + Docker-compose docker-compose.yml 파일은 다음과 같다. version: '3.8' networks: server-connection: driver: bridge db-connection: driver: bridge services: ng..