레이블이 architecture인 게시물을 표시합니다. 모든 게시물 표시
레이블이 architecture인 게시물을 표시합니다. 모든 게시물 표시

[컴] RabbitMQ temporary queue

queue / 임시큐 / 송수신 다른 큐/ queue /

RabbitMQ temporary queue

아래처럼 임시 queue 를 만들 수 있다.
result = channel.queue_declare(queue='', exclusive=True)

한명 접속 후 삭제

exclusive=True 주면, cosumer 의 connection 이 close 되면, queue 가 삭제된다.(참고:Queues — RabbitMQ)

example

"""
                                  to_b_rk     +-----------------+
                                              |                 |
+--------+                          +------>  |     to_b_q      |          +---------+
|        |                          |         |                 +--------> |         |
|        |                          |         +-----------------+          |         |
|        |       +----------+       |                                      |         |
|    A   +-----> | to_b     |       |                                      |   B     |
|        |       |          +-------+                                      |         |
|        |       +----------+                                              |         |
|        |       +----------+                 +------------------+         |         |
+----+---+       | to_a     |                 |                  |         |         |
     ^      +--> |          +---------------->+ <random_name>    +-----+   +---+-----+
     |      |    +----------+                 | temporary queue  |     |       |
     |      |                  <random_name>  +------------------+     |       |
     |      |                                                          |       |
     |      |                                                          |       |
     |      |                                                          |       |
     |      +------------------------------------------------------------------+
     |                                                                 |
     |                                                                 |
     +-----------------------------------------------------------------+


"""

parameters = pika.URLParameters('amqp://guest:guest@127.0.0.1:5672/%2F')
connection = pika.BlockingConnection(parameters)
channel = connection.channel()

to_a = 'to_a'
to_b = 'to_b'
to_b_q = 'to_b_q'
to_b_rk = 'to_b_rk'

# to_b queue
channel.exchange_declare(exchange=to_b,
                         exchange_type='direct')
channel.queue_declare(queue=to_b_q)  # idempotent
channel.queue_bind(exchange=to_b,
                   queue=to_b_q,
                   routing_key=to_b_rk)

# to_a queue, random temporary queue
channel.exchange_declare(exchange='to_a',
                         exchange_type='direct')
result = channel.queue_declare(queue='', exclusive=True)
recv_queue = result.method.queue
channel.queue_bind(exchange='to_a',
                   queue=recv_queue,
                   routing_key=recv_queue)

# send message to to_b queue
data = {}
data['to_a_queue'] = recv_queue
message = json.dumps(data)
channel.basic_publish(exchange=to_b,
                      routing_key=to_b_rk,
                      body=message)

See Also

  1. 쿠...sal: [컴] RabbitMQ 자료들

[컴] 백업 방식들

백업 / 백업 방식 / 운영 노하우/

백업 종류

  • full backup: 모든 것을 백업
    • 백업 주기: 매주(또는 그 보다 긴 주기로) 실행하는 것이 보통.
  • incremental backup(증분 백업) : 변경된 것만 백업하는 것
    • 백업 주기: 증분 백업은 매일 밤
  • synthetic full backup(통합 풀 백업) : 복원은 풀 백업처럼 하지만 백업은 그렇지 않은 백업이다.

주기적으로 전체 백업을 실행하는 이유

증분 백업으로 순차적으로 백업하면, 특정부분이 지워지고, 업데이트되는 등 비효울 적이다. 그래서 적정수준까지 full backup 으로 살리고, 이 이후 부분만 incremetal backup 을 복원(retore)하면 된다.
하지만 전체 백업을 수행하면 그 서버에 상당한 부하가 간다.
백업과 복원 효율성 사이의 trade off 가 있다.

백업방식

결과적으로 file 의 저장이 어떤 방식으로 이뤄져 있느냐에 따른 분류인듯 하다.

1. Copy

  • 가장 흔한 방법
  • 각 파일을 한 매체에서 다른 매체로 간단히 복사.(최신 파일 리스트와 파일 버전을 보고)
  • 백업 중인 시스템에 아무런 영향을 미치지 않는다.
  • 이 방법은 테이프나 디스크에서 활용
  • 시간이 오래 걸린다.

2. Block level incremental backup Snapshot

  • 디스크에서만 가능
  • 백업 시스템이 변경된 각 파일이나 블록을 스토리지 시스템에 별도의 개체로 저장하는 경우에만 가능한 방법
  • 백업 시스템이 전통적으로 백업본을 저장하던 방식, 즉, 여러 파일을 컨테이너 내부에 넣는(예: tar형식 또는 상용 백업 형식)과는 대비된다.
  • 전체 백업본을 각 object 에 대한 최신버전들의 모음(gathering) 으로 만들수 있다.(snapshot)
  • 데이터의 이동이 없기 때문에 통합 풀 백업본을 만드는 시간이 거의 걸리지 않는다. 그래서 훨씬 더 자주 만들 수 있다.
  • 실제로 이 방식을 지원하는 시스템은 대부분은 특정 파일이나 object 가 백업이 되면, 자동으로 '전체 백업본'을 만든다.
    • 블록 수준 증분 영구 백업 시스템(block-level incremental permanent backup system, block-level backup)
    • 전체 백업본을 만들어야 할 일이 없다.

3. virtual full backup

Reference

  1. 복원과 백업을 모두 효율적으로··· ‘통합 풀 백업’이란? - CIO Korea, 2020-05-15

[컴] 오브젝트 스토리지(Object Storage)

백업 방법 /  여러리즌으로 / back up / 운용 / 주기적인 백업 / object storage

오브젝트 스토리지(Object Storage)

  • 아마존의 심플 스토리지 서비스(Simple Storage Service, S3)
  • 애저의 블롭 스토어
  • 구글의 클라우드 스토리지

Object storage System

계층적 디렉토리 및 서브디렉토리 구조가 없는 일종의 파일 시스템
  • 오브젝트 스토리지 시스템에 저장된 모든 오브젝트는 콘텐츠에 따라 고유 식별자(Unique IDentifier, UID)가 주어진다.
  • 보통 uid 는 SHA-1 같은 hash algorithm 응 이용해서 만든다.

오브젝트 스토리지와 블록 스토리지 간의 큰 차이

  • 오브젝트 스토리지에 저장된 모든 오브젝트는 최소한 3곳의 가용 구역으로 자동으로 복사된다
  • 오브젝트 단위로 복제를 한다.
    • 클라우드 블록 스토리지 및 보편적 RAID 시스템은 블록 수준에서 복제가 이루어진다.
  • 오브젝트는 절대로 변경되지 않는다. (위키의 편집같은 것을 생각해보자.)
    • 오브젝트가 변경되어야 한다면 그냥 새 오브젝트로 저장
    • 버전 분류가 지원된다면 이전 오브젝트 버전은 역사적 목적으로 저장
  • 오브젝트 스토리지는 위해를 끼칠 수 있는 여러 원인을 방어하는 여러 보호 수준을 자동으로 포함
  • 선택적인 WORM(Write-Once-Read-Many) 보호
  • 교차-지역 복제 등 이용 가능한 모든 베스트 프랙티스를 준수
  • 오브젝트 스토리지가 여전히 오류를 범할 수 있는 인간에 의해 작성 –> 오브젝트 스토리지 내 데이터가 미션 크리티컬이라면 백업하는 것이 적절

다른 백업 서비스 이용

  • AWS 글레이저 딥 아카이브
  • 애저 아카이브 스토리지
  • 구글 콜드라인
  • 상이한 계정 및 지역 을 이용해야 한다.

블록 볼륨 백업

  • 블록 볼륨은 백업해야 한다.
  • 스스로 이들을 백업.
  • 블록 스토리지 스냅샷
    • 다른 지역 및 계정으로 복제

오브젝트 스토리지 백업

  • 오브젝트 스토리지는 여러 가용 구역으로 복제가 자동으로 이루어진다.
  • 하지만 완벽이란 없다 –> 필요하다고 판단되면 백업을 해라.

See Also

  1. 백업 방식들

Reference

[컴][NodeJs] CPU Intensive job 을 Node.js 에서 처리할 때

노드js nodejs 에서 싱글 쓰레드 / single thread job / cpu 사용량이 큰 작업 처리 방법 /

CPU Intensive job 을 Node.js 에서 처리할 때

node js - single thread

기본적으로 single thread 로 알려져 있는데, 이것은 약간 이해를 잘 못 할 수 있어서 간단한 설명을 하자면, ref. 2 에서 여기 를 보면 node js 의 구성을 살짝 엿볼 수 있는데, libeio 를 통해 thread pool 을 만들어서 사용한다. (ref. 3)
그렇기 때문에 이것이 single threaded 인 것은 user 의 source code 를 run 하는 부분을 이야기 한다. 아래 코드를 예로 들면 user 의 code 부분은 하나의 thread 에서 동작한다. 하지만 fs.readFile 같은 부분은 Thread Pool 로 던져질 것이다. 그리고 response 가 오기까지 또 이 single thread 는 console.log('right after') 부분으로 처리할 수 있게 되는 것이다.
var fs = require('fs');  
fs.readFile(‘/files/help.txt’, function(err, buf) {  
    console.log('done');
});
console.log('right after');
from : ref. 1

cpu intensive job

그러므로 nodejs 로 만든 server 들은 기본적으로 single thread 로 user request 를 처리하게 된다. 하지만 만약 request 하나에서 cpu intensive 한 작업을 처리하는 경우가 있는 request 에 대해서는 nodejs 에서 처리가능한 request 양이 급격히 줄어들 수 밖에 없다. 이런 문제점에 대한 해결책에 대한 이야기가 아래 글들에 담겨있다.
대략적인 내용은 cluster 를 사용해서 request 마다 process 를 하나 더 만들어서 cpu intensive job 을 그쪽으로 넘기는 것인데, 문제는 이것이 너무 많은 memory 를 할당해야 한다는 것이다. 그래서 cluster 와 queue(kue library) 를 이용해서 일종의 process pool 을 만들어서 사용하는 해결책을 제시한다.

여담으로, 이 방법들을 살펴보고 있으려니까 아주 오래전에 linux 에서 c 로 server programming 을 하던 때의 생각이 난다.

node js http server timeout

nodejs v6.x 에서 일단 기본 timeout 이 2 분으로 설정되어 있다고 한다. 즉, request 를 보낸지 2분후 까지 response 가 없으면 error 가 된다. 이 timeout 내에 더 많은 request 를 처리하기 위해서라도 "cluster 의 사용"은 필요할 듯 하다.

References

  1. Introduction to NodeJS, A SSJS: Part II - EventLoop Explained
  2. https://youtu.be/L0pjVcIsU6A?t=366
    • 동영상에서는 Node.js 의 철학? 을 알 수 있다.
  3. javascript - Nodejs Event Loop - Stack Overflow
  4. Cluster | Node.js v12.3.1 Documentation

[상식][경제] 아파트 재건축시 무상 배정 평형 계산


출처 :   http://blog.daum.net/0950kds/12287296

재건축시에 무상으로 몇평을 얻을 수 있는 지 계산 하는 방법에 대해 알아보자.

일단 개략적으로 설명을 하면 "무상지분율" 을 구하고 이것을 자신의 아파트의 대지지분(m2) 에 곱하면 된다.

  • 무상지분율(%)
     = ((재건축시 총수입 - 재건축 총 비용)/평당 분양가)/총대지면적
  • 추가부담감없이 입주할 수 있는 무상 평형 = 조합원의 대지지분 x 무상지분율



추가부담금

무상지분율을 설명하기 전에 "추가부담금(분담금)"이 왜 발생하는지 부터 알아보자.

현재 내 아파트는 21평형이고, 평당 1,000만원이라고 하자. 만약 재건축을 하는데 예전 아파트와 모양과 크기, 세대수가 똑같은 아파트를 짓는다고 한다면 들어가는 "건설비"를 조합원들이 자신이 소유한 땅의 크기만큼(대지지분) 등분 해서 내야 할 것이다.

 이 때 발생하는 수익이 전혀 없기 때문에 조합원들은 그냥 땅에 집을 새로 짓는것과 같은 비용을 내게 된다. 이것이 이 상황에서는 "추가부담금"이 된다.

그렇다면 이런 비용(추가부담금)을 줄이려면 어떻게 해야 할까? 당연한 얘기지만 새집을 지으면서 수익을 만들어 내면 된다. 새집을 지으면서 수익이 발생시키는 방법은 여러가지가 있겠지만 쉽게 생각할 수 있는 방법으로 내가 살 집 이외에 몇채를 더 지어서 이 것을 팔면 된다.

그리고 이렇게 발생한 수익은 모두 조합원(아파트주민)들에게 돌아간다. 그 수익이 결국 "무상지분율" 을 높여 주는 요인 중 하나가 되는 것이다.

당연한 이야기이지만, 그러기 때문에 아파트 분양가가 중요해 진다. 분양가가 낮아지면, 결국 주민의 부담금이 커질 수 밖에 없다. 실제로 ref.2 에 보면 분양가의 변동으로 인해 추가 부담이 되는 모습을 확인 할 수 있다.

ref. 5 를 보면, 2011년에 결정된 개포주공3 단지의 3.3m2(1평)당 추가부담금이 대략 1,886만원 정도이다.


추정 분담금과 실제 분담금 사이의 괴리

ref. 7 에 따르면, 실제 각 조합이 입력하는 설계비 공사비 보상비 외주용역비 등 50여 개 데이터를 바탕으로 조합원별로 분담금이 산출되지만 조합 설립 단계에서 제시되는 분담금과 분양 신청 단계, 관리 처분 단계에서 제시되는 분담금에 적지 않은 차이가 발생하는 것으로 알려졌다.
 서울시도 추정 분담금이 물가상승률과 금융비용, 이자 부담 등을 감안하지 않기 때문에 실제 분담금과 괴리가 있다는 사실을 인정하고 있다. 게다가 추정 분담금은 '분양률 100%'를 전제로 산출되는데 실제 올해 강남과 강동에 분양한 재건축 단지에서 상당수 미분양이 발생하고 있다.




무상지분율

그럼 이제 무상지분율을 살펴 보자. 무상지분율은

  • 재건축에서 대지 1평당(또는1 m2 당) 얻은 수익

이라고 보면 될 듯 하다. 예를 들어 무상지분율이 181% 라면, 1.81 즉, 재건축으로 인해 대지 1평에 대해 1.81 평의 수익(1.81평x평당분양가)이 발생했다고 보면 된다.

만약 내 21평 아파트의 대지지분이 10평이고 재건축시 무상지분율이 181% 라면, 나는 18.1평(10평x1.81) 형의 아파트에 분양신청을 해서 입주할 때는 무료로 들어가 살 수 있다.

하지만 세상에 공짜는 없다. 내가 좀 더 작은 아파트이지만 새아파트로 이사하면서 건축연면적, 대지지분을 헌납하게 되는 것이다. 새 아파트에 대한 비용을 지불하고 있는 것이다.

  • 건축연면적 : 아파트의 크기의 일정부분(건축연면적)을 넘기게 되었고,
  • 대지지분 : 같은 면적에 가구수를 늘리면 당연히 대지지분이 줄어들게 된다.



재건축의 이익

그렇다면 왜 재건축에서 이득을 본다고 얘기하는 것일까? 그것은 아래의 이유 때문이라고 볼 수 있을 것이다. 물론 지금은 부동산 경기가 좋지 않기 때문에 아래의 사항이 전부 맞지는 않을 것이다.




재건축 추가이익 환수

현재 국토부는 재건축 조합원 1명당 얻는 이익이 3000만 원을 넘을 때부터 이익 규모에 따라 10∼50%의 환수율을 적용한 부담금을 징수한다.[ref. 3]




무상지분율 엑셀파일

계산할 때 사용할 수 있는 엑셀파일을 아래 링크 해 놨다. 참고로 m2이 아니고 '평형'으로 되어 있다.
https://docs.google.com/open?id=0B_vDe46i0fUUVG03WkZmZUF5dEE




전용면적 확인 하는 법

  • 등기부등본 >> 표제부 >> 전유 부분의 건물의 표시

라는 항목을 확인하면 된다.



대지지분 확인 하는 법

  • 등기부등본 >> 표제부 >> 대지권비율

이라는 항목을 보면 알 수 있다.



References

  1. 내집 마련시 '대지 지분' 계산법
    http://k.daum.net/qna/openknowledge/view.html?qid=3AvTi&
  2. 강동 고덕 7개단지 재건축 곳곳서 차질, 매일경제, 2013년 7월 9일
  3. 재건축 초과이익 환수율 높이고, 3대 핵심규제는 푼다, 동아일보, 2008년 9월 24일
  4. 재건축 절차
  5. 강남재건축 추가 부담금, 2011. 10. 24
  6. 강남 재건축 추가분담금 `비상` 개포 최고 1억 부담에 가격하락…반포·고덕 대책 부심, 2014.07.06
  7. 조합-시공사 한발씩 양보…투명한 검증 뒤따라야, 2014.08.11

[상식][건축] 화장실 리모델링

리모델링, 리폼, 시공

 

자신이 직접 찍은 사진이나 인테리어 잡지 등의 사진 등을 가지고 상담하면

공사시 시공자와의 분쟁의 소지를 막을 수 있고,

설계, 디자인 부분, 잡다한 공정 등에서 시간을 줄일 수 있다.

 

아래의 경우를 제외 하고는 대부분 리폼으로 충분하다고 한다.

리모델링이 꼭 필요한 경우

  • 기존 타일이 많이 손상돼서 코팅만으로 불가능할 때
  • 아예 욕실 타일을 새로 바꾸고 싶을 때

 

 

욕실 공사

  1. 욕실 구조 선택
    • 욕조 파티션 / 욕조형
    • 수납장의 위치나 크기
    • 배관 위치
  2. 공동주택인 경우 욕실공사 미리 신고하기
  3. 욕실공사 기본 절차
    • 철거 –> 방수 –> 타일시공 –> 목공사 –> 전기공사 –> 설비
    • 철거 : 욕실내부의 타일, 천장, 욕조 철거

 

욕실에는 안전상의 이유로 방습조명 사용하기

 

 

시공방법

한국 욕실이 건식보다는 습식이 많아서

--> 몰타르 사용 –> 견고함 + 습기에 강함

 

 

뜯지 않고 새로운 욕실로 시공하는 방법

  • 크리스탈 욕실 코팅
  • 바이오젠 욕실 리폼

 

 

타일 덧붙임 시공

아래의 경우가 아니라면, 기존의 타일 위에 덧붙여서 시공하는 덧붙임 시공을 기본으로 한다. 덧붙임 시공은 기존의 타일 위에 붙이는 것이기 때문에 약간의 공간손실이 있음을 감안해야 한다.

  • 타일이 2면이상 탈락
  • 방수문제
  • 습식으로 사용하는 욕실에는 삼가야 한다.

 

 

References

  1. http://blog.naver.com/royal_story/20129477610
  2. http://blog.naver.com/royal_story/20129624744

[상식][건축] 일반석고 보드와 밤라이트 보드

Gymsum Board vs Bamlite Board

 

일반석고보드(Gypsum Board)

  • 경량석고칸막이를 지칭
  • FDG(배연탈황)석고를 주원료로 만든 석고보드(Gypsum Board)사이에 충진재를 넣어 생산한 경량칸막이
  • 석면을 사용하지 않음.

 

밤라이트보드(Bamlite Board)

  • 시멘트보드의 일종
  • 시멘트의 단점인 인장강도를 보강
    • 과거에는 인체에 유해한 유리섬유(Fiberglass)-흔히 말하는 석면-가루를 사용해서 인장강도 보강
    • 현재는 석면가루(Fiberglass)가 유해해서 식물성 섬유 등을 사용해서 인장 강도를 보강하는 대체품이 생산된다.

 

 

항장력(tensile strength) , 인장강도(tensile strength)

끊어질 때까지 잡아 당겼을 때 견뎌내는 최대 하중을 재료의 단면적으로 나눈 값

 

 

References

  1. http://kin.naver.com/qna/detail.nhn?d1id=8&dirId=808&docId=31899284&qb=u%20fB%20Lq4teU=