일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- AWS NAT gateway
- MongoDB 참조
- 레디스설치
- Loard Balancer
- 스프링 게시판
- EC2 배포
- EC2 생성
- 몽고DB
- ubuntu 배포
- AWS VPC
- VPC EC2
- codepresso
- SrpingBoot
- Amazon Web Service
- aws ec2
- 소프트웨어 개발과 테스트
- AWS NAT
- Datamodel
- SpringProject
- AWS
- MongoDB DataModel
- AWS Route53
- AWS 요금
- 코드프레소
- JPA연관관계
- MongoDB Reference
- MongoDB
- AWS CloudTrail
- AWS #CloudTrail #AWS로그
- codepreosso
- Today
- Total
목록분류 전체보기 (41)
정환타 개발노트
Sharding MongoDB의 샤딩(Sharding)을 알아보기 전에 먼저, 샤딩에 대한 개념을 알아보자. 샤딩은 데이터를 여러 서버에 분산해서 저장하고 처리할 수 있는 기술을 말한다. 복제(Replication)와의 차이점이 있다면, 복제는 고가용성을 위한 솔루션이고 샤딩은 분산 처리를 위한 솔루션이라는 것이다. (몽고디비에서는 고가용성과 대용량 분산 처리를 위해 복제와 샤딩을 모두 적용한다.) 일반적으로 부산 처리를 할수 있는 방법에는 vertical scaling 과 horizontal scaling 두가지가 있다. 먼저, Vertical scaling은 수직 확장의 개념으로 이해할 수 있는데 단일 서버를 확장하고자 할 때 사용한다. 예를 들어 고성능의 CPU를 사용하거나 RAM을 추가하거나 저장..
요즘 잘나가는 SNS 서비스들의 아키텍처나 운영 구조를 통해 SNS 시스템의 기술 트렌드를 분석한 특징에 대한 정리를 하였다. 1. 소규모 조직 대부분의 SNS 서비스 업체들은 인력이 20명 이내이다. 영업 조직이 있는 솔루션 업체는 영업 인력과 디렉터를 포함하더라도 40명을 넘지 않느다. 이는 빠른 의사결정을 할 수 있도록 하기에, 서비스 개선을 빠르게 할 수 있다. 2. 오픈소스로 무장 SNS 서비스들이 대형 벤더 솔루션을 사용하지는 않는다. 대부분 오픈소스를 사용하며, 여러가지 언어를 함께 사용한다. 한국에서 익숙한 자바만으로 전체를 구현하는 것이 아닌, Python, Ruby와 같은 언어를 함께 활용한다. 또한 기존의 오픈소스를 활용하지, 새로운 솔루션을 만드는 경우는 적다. 3. DevOps 이..
대용량 서비스 레퍼런스 아키텍처 이번에는 대용량 서비스를 하는 플랫폼에 적용되는 레퍼런스 아키텍처에 대해 알아보자. 이전에 포스팅한 MSA(Micro Service Architecture)와 같은 아키텍처들은 논리적인 아키텍처였다면, 이 아키텍처는 솔루션을 맵핑한 조금 더 구체적인 아키텍처이다. 아키텍처의 구조 대용량 서비스 레퍼런스 아키텍처는 사상적으로 SOA(Service Oriented Architecture)를 기반으로 한다. 위의 아키텍처 구조는 대용량 처리 서비스와 대부분의 온라인 서비스에서 모두 사용되는 구조이다. 시스템의 성격에 따라 구조의 변형은 조금씩 있을 수 있으나, 기본적인 형태는 유지된다. 또한, 기본적으로 플랫폼의 형태를 띄고 있는데, UI에 해당하는 웹 사이트, 모바일 어플리케..
이전 포스트에서도 간단히 설명을 했지만 DevOps는 개발(Development)과 운영(Operation)이 합쳐진 형태를 말한다. 2020/02/05 - [DevOps] - 마이크로 서비스 아키텍처와 거버넌스 모델(+ 진화형 모델, DDD) 이번에는 조금 더 깊이 DevOps가 나타난 환경과 특징에 대해 알아보려고 한다. 기존 개발 체계의 문제 전통적인 개발 운영 체계는 개발팀에 의해 개발이 끝나면 시스템은 테스트를 거쳐 운영팀으로 이관되고 운영팀은 해당 시스템을 배포/관리/운영한다. 시스템을 운영하다보면 장애가 반드시 생기기 마련이다. 문제는 여기에 있다. 개발팀에서는 애플리케이션에 대한 이해가 있지만, 인프라 시스템에 대한 이해는 없다. 반대로 운영팀은 인프라 시스템에 대한 이해는 있지만, 애플리..
거버넌스 모델 거버넌스(Governance)란 개발 조직의 구조나 프로세스를 정의한 것으로, 일반적으로 중앙 집중 성향을 가진 조직에서 표준 프로세스와 가이드를 이용하여 전체 팀을 운용하는 모델로 사용된다. 이때 위의 모델을 중앙 집중형 거버넌스 모델이라고 하며, 같은 프로세스를 공유하기에 유지보수가 쉬우며 팀원들의 교체가 편리하다는 장점이 있다. 하지만, 현대의 개발시에는 많은 오픈소스들이 발달 되었고, 선택할 기술들이 많아졌으며, 요구 사항에 맞추어 효율성 측면을 고려한다면 각각 경우에 맞추어 최적화된 기술을 사용하는 것이 좋을 수 있다. 이 경우에는 중항 집중형 거버넌스 모델에서는 하나를 적용하기 위해서는 모든 개발팀을 교육하고 운영 준비를 맞추어 해야하기 때문에 효율성이 떨어지게 된다. 분산형 거..
MongoDB에서 DB를 참조하는 방법은 두가지로 나뉜다. 하나는 수동 참조(Manual Reference)이며, 다른 하나는 "DBRefs"를 사용하는 것이다. 수동 참조 수동 참조 방식은 다른 document의 _id 필드를 참조를 사용할 document의 하나의 필드로 저장하는 방식이다. 필드 중 하나인 _id 값을 통해 참조할 document의 데이터를 가져온다. 대부분의 경우에는 수동 참조 방식을 사용한다. 아래에는 첫번째인 place 컬렉션과 두번째인 poeple 컬력센 두개로 구성되어 있다. original_id = ObjectId() db.places.insert({ "_id": original_id, "name": "Broadway Center", "url": "bc.example.net..
MongoDB를 사용한다면, 여러가지 Application 환경에서 다양한 모델을 적용하여 활용할 수 있다. 연관 동작 수행 MongoDB에서 단일 document에 대한 쓰기 동작을 유기적으로 수행 할 수 있다. 만약 여러개의 필드가 서로 영향을 미친다면, 같은 document가 그 필드를 포함하면 효율적으로 동작을 수행할 수 있다. 예를들어, 책과 대여가능한 권수, 대여 정보를 유지하는 상황에서, 대여가능 권수(available)와 대여 정보(checkout)는 서로 연관되어 처리해야 한다. { _id: 123456789, title: "MongoDB: The Definitive Guide", author: [ "Kristina Chodorow", "Mike Dirolf" ], published_da..
Data Model 이번에는 데이터 모델들에 대해 기술을 하겠다. MongoDB 또한 documents간의 관계를 설정할 수 있는데, 그러한 관계를 설정할 수 있는 모델 구조는 다음과 같다. One-to-One Relationship(일대일 관계) 두개의 document에 대해 일대일 관계로 구성할 수 있다. 아래의 예제에서는 후원자(patron)와 주소를 매핑하고 있고, 주소에는 후원자에 대한 reference가 포함된다("patron_id") { _id: "joe", name: "Joe Bookreader" } { patron_id: "joe", street: "123 Fake Street", city: "Faketon", state: "MA", zip: "12345" } 하지만 만약 이름(name)..
Bulk Write MongoDB는 단일 컬렉션(Collection)에 대하여 대량 쓰기, 업데이트, 제거 작업을 bulkWrite를 통해 할 수 있다. Bulk Write는 Ordered 와 Unordered 두가지가 존재한다. Ordered 방식은 작업을 순차적으로 실행하는데, 만약 쓰기 작업을 하는 도중 오류가 발생하면 나머지 쓰기 작업을 처리하지 않고 작업을 끝낸다. Unordered 방식은 쓰기 작업 중 하나가 오류가 발생하더라도 나머지 작업을 계속 실행한다. - Ordered 방식은 이전 작업을 완료할 때 까지 다음 작업을 처리하지 않기 때문에 처리 속도가 느리다. (기본적으로 MongoDB는 ordered 방식을 사용) bulkWrite()는 다음과 같은 작업을 지원한다. insertOne ..
MongoDB mongodb에서 CRUD(Create, Read, Update, Delete)를 하는 방법에 대해 알아보려고 한다. 먼저, MongoDB의 설치는 하단의 링크를 참조하면 된다. https://docs.mongodb.com/manual/tutorial/install-mongodb-on-os-x/ MongoDB는 NoSQL이지만, 다른 RDBMS와 같이 CRUD를 제공하는데, 하나씩 살펴보겠다. (글쓰는 시점 기준으로 가장 최신버전인 4.2를 기준으로 작성하였습니다.) Create Operations(Insert) Create는 새로운 documents를 collection에 생성하거나 추가하는 동작이다. MongoDB의 create는 insert를 통해서 이루어지는데, 만약 collecti..