일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |
- MongoDB DataModel
- AWS 요금
- codepreosso
- aws ec2
- MongoDB
- 코드프레소
- AWS
- AWS VPC
- MongoDB 참조
- 레디스설치
- JPA연관관계
- EC2 생성
- codepresso
- SrpingBoot
- 스프링 게시판
- Loard Balancer
- SpringProject
- ubuntu 배포
- Amazon Web Service
- AWS NAT gateway
- Datamodel
- AWS Route53
- MongoDB Reference
- EC2 배포
- 소프트웨어 개발과 테스트
- VPC EC2
- AWS #CloudTrail #AWS로그
- AWS CloudTrail
- 몽고DB
- AWS NAT
- Today
- Total
목록전체 글 (41)
정환타 개발노트
성능 엔지니어링의 정의와 범위 성능 엔지니어링은 시스템의 목표 서능을 정의하고 이를 달성하기 위해서 시스템을 구조적으로 개선하는 작업을 말한다. 좁게 생각하면 코드 상의 병목을 잡고 시스템의 설정을 수정하여 성능을 높히는 튜닝으로 볼 수 있지만, 넓게 보면 성능 목표 정의와 최적 성능을 위한 디자인, 구현, 개발, 설계, 운영, 모니터링의 모든 과정을 포함할 수 있다. 성능 엔지니어링을 수행하는 4단계 성능 엔지니어링은 소프트웨어 개발 과정 중 총 4단계에 거쳐 수행된다. 1. 분석 단계 초기의 분석 단계에서는 성능에 대한 목표를 정의한다. 목표 응답 시간, 총 사용자 수, 동시 접속자 수와 같은 목표를 정하는데 요기서 이를 기반으로한 성능 모델까지 고려한다. 예를 들어 게임 시스템에서 초등학생을 대상으..

이전에 MongoDB의 사딩에 대해서 알아보았다. 이번에는 MongoDB 샤딩 클러스터의 요소인 Shards, Config server, Mongos에 대해 자세히 알아보겠다. Sharding 샤드는 샤드 클러스터에서 샤드 데이터의 집합이라고 할 수 있다. 각 샤드에 대한 관리는 샤드에 직접 연결하여야 하는데, 단일 샤드에 쿼리 작업을 수행하면 해당 샤드의 데이터만 반환이 된다. 만약, 클러스터단의 작업을 수행하려면 mongos에 연결하여 읽기와 쓰기 작업을 해야한다. 기본적으로 샤딩을 위해서는 2개 이상의 샤드가 필요하다. 2개 이상의 샤드를 이용하기 위해서는 라우터가 필요하다. 라우터는 고가용성과 확장성을 확보할 수 있는데, 일반적으로 각 응용프로그램 서버에 라우터(Mongos)를 배치하여 사용한다...

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..