전체 글
-
MongoDB Oplog 와 Journaling 차이MongoDB 2021. 4. 28. 14:04
MongoDB에서 Oplog와 Journaling이라는 개념이 있습니다. 어느날 엇?! 이게 뭐였더라 둘다 sync를 맞춰주는 녀석이었던 같은데 확실하게 어떤 차이가있지?? 라고 헷갈리기 시작해서 정리하게되었습니다. 1. Oplog (operations log) 정확한 이름은 Replica Set Oplog입니다. 네이밍에서 느껴지듯이 이 개념은 레플리카에 속하는 개념입니다. Oplog는 Replica set의 데이터를 동기화를 위해 내부에서 발생하는 모든 동작의 로그를 기록한 것 입니다. Replica set의 개념을 제대로 모르는 분들을 위해 간략하게 설명! MongoDB는 HA(High Availability)를 위해 클러스터를 구축하는 개념이 Replica set 입니다. 이 클러스터를 구축하기 ..
-
[Web 기초] HTTPS의 동작 원리 (feat. 와이어샤크)Web 2021. 4. 26. 21:00
오늘은 HTTPS의 개념과 어떻게 동작하는지 정리해보았습니다. HTTP의 보안처리가 된 버전이 HTTPS인것은 다들 아실것입니다. 그리고 요즘은 HTTPS는 웹의 기본스펙이라고 봐도 문제가 없다고 생각됩니다. API를 사용하려고하여도 HTTPS가 안되어있으면 API를 신청, 사용할 수 없는 경우도 있으며 UX에도 영향을 끼친다고 생각합니다. 예를들어 은행사이트에 접속하였는데 아래와 같은 이미지가 주소창에 있다면 사용자에게 좋은 경험을 제공하지 못할 것 입니다. HTTPS는 무엇인가? HTTPS는 HyperText Transfer Protocol Secure의 약자이며 HTTP의 보안 버전입니다. HTTPS는 TCP 위에 SSL/TLS 층을 추가하여 암호화, 인증 그리고 무결성 보장을 통해 더 안전하게 만..
-
[Web 기초] HTTP 통신 과정Web 2021. 4. 26. 20:54
오늘은 web의 기초지식으로 HTTP 통신이 어떻게 이루어지는지와 간단하게 프로토콜을 정리해보았습니다. 개발공부 한창할때 보셨을 OSI 7계층과 네트워크 4계층 그림입니다. 우리가 집중한 부분은 네트워크 4계층으로 각각의 계층에 대해서 간단하게 정리하겠습니다. 1. TCP/IP 란 무엇인가? 간단하게 표현하면 인터넷으로 통신하는데 가장 기반이되는 프로토콜이라고 볼 수 있습니다. 대다수의 많은 프로그램들이 TCP를 기반으로한 IP위에서 동작을 하기 때문에 흔히들 묶어서 TCP/IP 로 표현을 합니다. 하지만 TCP와 IP는 계층이 나눠져있으며 역할과 책임이 명확히 다릅니다. ip IP는 Internet Protocol의 약자로써 네트워크상에서 다른 컴퓨터와 구별할 수 있도록 할당되는 주소입니다. 이 주소는..
-
MongoDB Shard 개수에 따른 퍼포먼스 확인하기MongoDB 2021. 4. 26. 20:49
오늘은 MongoDB 샤드란 무엇인지 그리고 샤드 수에 따른 퍼포먼스 변화를 확인해보겠습니다. 개념 Sharding 이란? Sharding은 데이터를 여러 몽고디비 서버에서 분산해서 저장하고 처리할 수 있도록 만들어주는 기술입니다. 가끔 replica와 sharding의 목적을 혼동하시는분이 계신데 replica는 고가용성을 위한 기술이며 샤딩은 분산처리를 위한 기술입니다. 그래서 몽고디비의 고가용성과 대용량 분산 처리를 하려면 replica와 sharding이 모두 필요하게 됩니다. 단순히 장비의 하드웨어 부품을 스펙업하는 스케일업(scale-up)으로도 성능을 향상 시킬 수 있지만, 투자 대비 효율이 떨어진다고 생각을합니다. 하지만 스케일아웃(scale-out)을 위해 수평적 샤딩을 한다면, 더 저렴..
-
MongoDB 초간단 log 관리하기MongoDB 2021. 4. 26. 20:40
MongoDB 3.0 부터 configuration 으로 logrotate 옵션을 지원하지만! 이것만으로도는 로그관리에 부족한 점이 많습니다. https://docs.mongodb.com/manual/reference/configuration-options/#systemLog.logRotate Configuration File Options — MongoDB Manual In some instances, such as when running in a container, the database can have memory constraints that are lower than the total system memory. In such instances, this memory limit, rather th..
-
Apache Spark(아파치 스파크) 개념 맛보기Big Data 2021. 4. 26. 20:29
날이 갈수록 AI가 화두가 되어가고 있습니다. 그리고 그 안을 들여다보면 데이터의 중요성을 알 수 있습니다. 개인적인 생각으로는 머지않아 인공지능 기술은 더이상 특정 기업의 전유물이 아닐 것 입니다. 우리가 날씨 API를 사용하는 것처럼, 라이브러리를 사용하는 것처럼 많은 딥러닝 모델 및 API가 생겨있을 것 입니다. 때문에 모델을 더 잘 만드는 것보다 양질의 데이터를 보유하고 있는것이 가장 중요한 일이라고 생각됩니다. 데이터만 가지고 있다면 잘 만들어진 모델에 재학습을 한다면 각각의 서비스에 더 최적화된 인공지능을 보유할 수 있을 것 입니다. 오늘은 빅데이터 처리의 강력한 기술인 Spark에 대해 간략히 맛보겠습니다. 탄생 이유 기존의 MapReduce가 빅데이터 분석을 쉽게 만들어주긴 하였지만 몇몇 ..
-
MongoDB 스키마 디자인 패턴MongoDB 2020. 8. 20. 18:40
데이터 모델링이 중요한 이유 1. Hardware 하드웨어의 자원은 무한하지 않기 때문입니다. 자원을 최대한 잘 활용할 수 있도록 모델링이 필요합니다. 2. MongoDB 몽고디비의 단일 다큐먼트 16MB 이상으로 저장할 수 없으며 WiredTiger 엔진은 다큐먼트의 정보를 읽기 위해서 전체 문서를 메모리에 올린 후 작업을 하기 때문에 다큐먼트에 무턱대고 때려박아(?) 놓는다면 메모리 이슈가 발생합니다. 3. Network 네트워크 속도에 대한 물리적한계가 존재합니다. 전 세계적으로 배포되는 애플리케이션의 모델링은 서비스 품질을 저하시키지 않고 데이터에 접근할 수 있도록 구성되어야 합니다. 디자인 패턴 (각 패턴별 자세한 설명과 예를 확인하시려면 더보기를 클릭해주세요) Attribute Pattern ..
-
CodePipeline 을 이용한 Nodejs 서버 앱 배포AWS 2020. 5. 26. 16:47
현재 auto scaling group + application load balancer 를 통해 서버를 운영하고 있습니다. 하지만 CI/CD에 대한 기술 부채로 인해 매번 배포할때마다 auto scaling group를 편집해야하는 말도안되는(?) 일을 해야했고 이제서야 해결하기로 마음을 먹었습니다. CodeDeploy를 통해 auto scaling group을 통해 다수의 인스턴스들을 일괄적으로 업데이트할수 있다는것을 발견하고 CodePipeline을 도입하게 되었습니다. 이번 게시글에서는 아래와 같은 AWS 기술 스택을 사용합니다. IAM + CodePipeline + EC2 + S3 + Application Load Balancer + Auto Scaling Group + AMI 소스는 제 깃허브..