분류 전체보기
-
PostgreSQL과 mongoDB를 쓰면서 드는 고민DB 2022. 7. 31. 17:50
고민 되는 부분 현재 메인으로는 postgreSQL을 사용하고 sub로 monboDB를 사용하고 있으며 대부분의 data는 postgreSQL에 저장하고 log data나 사용자 action에 관한 data는 mongoDB에 저장해서 사용하고 있다. 여태까지 다 명확히 schema를 정의할 수 있고 수정여지가 적은 data에 대해서만 처리를 하고 있었는데 최근에 변경 될 가능성이 많고 명확하게 schema를 정의하기 힘든 data를 관리해야 할 필요가 생겨서 고민이 된다. data 조회 시 mongo와 SQL DB를 서버 단에서 혼합해서 사용해도 문제가 되지 않는가? 사실 mongo도 indexing을 잘 활용하면 조회가 빠르고 거의 read만 진행할 것이기 때문에 성능 상 문제는 없을 것이라고 생각된다..
-
mongoDB에서 data history 관리하기mongoDB 2022. 7. 31. 17:34
문제사항 현재 사용하는 mongoDB에서는 과도하게 하나의 doc에 데이터를 embedded 시켜서 document 사이즈를 초과하게 되는 문제가 발생했다. 이는 history관련 로직이 문제였는데, 특정 data가 수정되었을 때 새로운 doc를 생성해서 관리하는 것이 아닌 history라는 배열에 이전 정보를 보관해서 저장하기 때문에 문제가 되었다. 사실 one-to-many이지만 one-to-few이기 때문에 embedded시켜도 문제가 없어야 하지만 애초에 doc사이즈가 매우 크기 때문에 문제가 발생했다. 해결 방법 이를 해결하기 위해 parent, visible 필드를 추가하고 data가 변경되면 기존의 doc을 clone하여 현재 상태의 snapshot으로 doc을 하나 생성한 뒤 parent에..
-
Multi Module과 MSA(micro service Architecture)etc 2022. 7. 30. 15:38
사실 Multi Module과 MSA에 대해 생각이 완전히 정리되지는 않아서 글로 정리하면서 생각을 정리해보려고 한다. 그래서 틀린 말이 있을 수 있는데, 이는 차차 보완해 나가보도록 하겠다. Multi Module이라는 것은 하나의 서비스에서 여러개의 모듈을 다운로드하여 import 해서 쓴다고 생각할 수 있다. 이는 결국 하나의 서비스 내에 있기 때문에 remote 통신이 필요하지 않다. 하지만 module에 문제가 있거나 변경사항이 있을 때 해당 서비스도 재 빌드하여 배포해야 한다는 단점이 있다. Multi Module이라는 것은 monolithic Architecture(모든 구성요소가 하나의 서비스에 통합되어 있는 형태)에서 MSA로 넘어가는 과정에서 거쳐야 하는 과정이다. 필자는 아래와 같은 ..
-
MongoDB Version up에서 발생한 추가 문제사항mongoDB 2022. 6. 6. 12:40
2022.03.09 - [mongoDB] - Nodejs에서 mongoDB, mongoose Version Upgrade Nodejs에서 mongoDB, mongoose Version Upgrade 이유 legacy system에서 mongoDB version 3.2.11을 replica set으로 사용중인데 현재 몽고는 version 5까지 나왔는데 더 늦게전에 version upgrade를 할 필요를 느꼈다. 방법 서치 mongoDB 공식 문서를 보니 v.. zzihyeon.tistory.com Dev Server에서는 mongo-message-queue module만 문제가 있었는데 prod서버에서 미처 고려하지 못한 문제를 발견하게 되었다. 1. Node.js mongoose에서 mongo gfs..
-
MongoDB - index (2)mongoDB 2022. 5. 29. 18:49
2022.04.17 - [mongoDB] - MongoDB - index (1) 에 이어서 작성하도록 하겠다. Index properties index에는 여러 property들이 있는데 이에 대해 간단하게 설명하도록 하겠다. TTL Indexes 정해진 시간 이후에 자동으로 document를 지울 때 사용하는 index이다. (만약 timeseries collection을 사용한다면 index가 아닌 collection의 option에 expireAfterSeconds를 추가해야한다.) db.eventlog.createIndex( { "lastModifiedDate": 1 }, { expireAfterSeconds: 3600 } ) Replica Set의 경우에는 TTL background thread..
-
Network 이해하기 - 1 (간단한 요약)CS 2022. 5. 20. 16:38
계기 AWS 설정을 하면서 용어가 헷갈리고 모르는게 많아 이론을 한번 정립하고 갈 필요를 느껴서 network 관련 복습을 해보려고 한다. 실제 물리적 장비와 같이 알면 더 이해가 쉬울거라고 생각해서 장비와 연관지어서 알아보자. OSI 7 layer data는 보낼 때 하나의 layer를 지날때마다 헤더를 붙여서 생성하고 받을 때 헤더를 decapsulation을 통해 경로를 찾는다. Physical Layer: 0,1 로 된 데이터를 전기적 신호로 변경해준다. 실질적으로 전송을 담당한다. 간단하게 랜선이라고 보면 된다. TCP/IP에서는 이 영역이 의미가 없다고 생각하여 L2로 합쳤다. Datalink Layer: 물리적 링크를 통하여 데이터를 신뢰성 있게 전송하는 계층이고, 받은 데이터를 물리 계층으..
-
Onesignal 이용 시 Content-Type header 문제Server management 2022. 5. 20. 14:51
계기 server에서 app push를 위해 onesignal rest api를 사용하는데, 이 때 Header로 'Content-Type':'application/json' 으로 설정했음에도 불구하고 onesignal에서 body를 파싱하지 못해 {"errors":["app_id not found. You may be missing a Content-Type: application/json header."]} 에러가 발생했다. 당연히 동작해야하는게 동작하지 않아 매우 많은 시간을 낭비하게 되었다. 해결 처음엔 app_id가 삭제된줄 알고 onesignal 홈페이지에서 확인했으나 아니었다. 그 다음은 메세징 기능이 바뀐건가 확인하기 위해 onesignal 홈페이지 상에서 notification을 생성하니..
-
Docker container에서 외부 ip 접근 문제Server management 2022. 5. 16. 22:33
계기 AWS EC2에서 Server를 띄우고 다른 EC2 인스턴스에 private IP를 이용해 접근하는게 문제가 없었고, onesignal을 사용하기 위해 onesignal.com 도메인에 접근하는데 local 환경에서는 정상동작하고 EC2환경에서 자꾸 lookup 문제가 발생했다. 이에 대해서 바보같이 여러가지 생각을 했다. AWS 상에서 외부와 통신하기 위해서 api gateway등록 서브넷 구성이라던가 특별한 작업을 해야 하나? Docker Container가 onesignal.com을 찾는 lookup 과정에서 문제가 있나? 해결 생각해보면 1번 작업은 고민할 가치가 없었다. go mod tidy를 이용해서 package을 다운로드 할 때 당연히 외부 통신이 되기 때문이다. 근데 이걸 생각하지 ..