분류 전체보기
-
프로비저닝(Provisioning)이란?서버 2019. 2. 2. 19:13
프로비저닝(Provisioning)이란 어떠한 지식이나 자원 등을 미리 준비해놓고 요청이 들어왔을 때, 해당 요청에 맞게 공급하는 것을 의미합니다. 즉 사용자 혹은 비지니스 요구사항에 맞게 할당, 배치, 배포하여 시스템을 사용가능하도록 준비하는 절차를 뜻합니다.프로비저닝은 아래와 같이 분류할 수 있습니다.서버 자원 프로비저닝서버의 CPU, Memory 등의 자원을 할당 또는 적절하게 배치하여 운영이 가능하도록 준비OS 프로비저닝OS 를 서버에 설치하고, 구성 작업을 해서 OS가 동작 가능하도록 준비소프트웨어 프로비저닝소프트웨어(WAS, DBMS, 어플리케이션 등) 를 시스템에 설치 배포하고 필요한 구성을 세팅해서 실행 가능하도록 준비스토리지 프로비저닝낭비되거나 사용되지 않는 스토리지를 식별하고 공통 풀에..
-
[Django] Custom Manager, Custom QuerySet언어/파이썬 & 장고 2019. 2. 2. 18:12
Django 모델에서 Manager는 데이터베이스와 상호 작용하는 인터페이스입니다. 기본적으로 Manager는 Model.objects 속성을 통해 사용할 수 있습니다. Django 모델마다 기본적으로 사용되는 기본 관리자는 django.db.models.Manager입니다.from django.db import models class DocumentManager(models.Manager): def pdfs(self): return self.filter(file_type='pdf') def smaller_than(self, size): return self.filter(size__lt=size) class Document(models.Model): name = models.CharField(max_le..
-
[Django] Prefetch()를 사용한다면 to_attr 속성을 같이 사용하자언어/파이썬 & 장고 2019. 2. 2. 17:35
ORM을 조인하고 싶을 때 N:1의 관계나 N:N의 관계일 경우, prefetch_related()를 사용하게 됩니다. 모델 정의예시를 들기 위해 아래와 같이 모델과 모델간 관계를 정의합니다.from django.db import models class Topping(models.Model): name = models.CharField(max_length=30) class Pizza(models.Model): name = models.CharField(max_length=50) toppings = models.ManyToManyField(Topping) vegetarian = models.BooleanField() def __str__(self): return "%s (%s)" % ( self.name,..
-
[Python] 문자열을 Datetime으로 변경하는 방법언어/파이썬 & 장고 2019. 2. 2. 16:50
문자열로 되어 있는 시간을 Datetime 객체로 변경하는 방법은 많이 찾아 볼 수 있습니다. 여기서는 기존에 존재하는 방법과 추가 설치 모듈로 좀 더 간편하게 사용하는 방법을 설명하겠습니다.1. Datetime파이썬에 내장되어 있는 Datetime 패키지를 사용하여 아래와 같이 변환을 할 수 있습니다.import datetime date_time_str = '2018-06-29 08:15:27.243860' date_time_obj = datetime.datetime.strptime(date_time_str, '%Y-%m-%d %H:%M:%S.%f') print('Date-time:', date_time_obj) # Date-time: 2018-06-29 08:15:27.243860 흔히 사용하는 포맷..
-
엣지 컴퓨팅(Edge Computing) 이란?서버 2019. 1. 29. 13:36
클라우드 컴퓨팅 탄생 이후 문제점이 발생하여 이를 해결하고자 엣지 컴퓨팅 개념이 탄생했습니다. 아래에서 클라우드 컴퓨팅의 문제점과 엣지 컴퓨팅의 정의에 대해 설명하겠습니다.클라우드 컴퓨팅 문제점클라우드 컴퓨팅이란 인터넷을 통해 서버, 저장소, 소프트웨어, 분석 등의 컴퓨팅 서비스를 제공하는 것입니다. 네이버의 NDrive, 구글 Docs 등이 클라우드 컴퓨팅의 대표적인 예로 볼 수 있습니다. 클라우드 컴퓨팅이 탄생한 이후, 각광 받으며 여러 기업들이 클라우드 환경으로 전환하였습니다.그러나 최근 들어 이런 클라우드 컴퓨팅에도 여러 문제점이 있습니다. 클라우드 서비스를 이용하는 사람들이 기하급수적으로 늘어나면서 서버 및 데이터 센터에서 처리할 수 있는 데이터의 양을 넘어서기 시작했고 수집한 데이터를 분석하고..
-
[Python] +와 += 차이점언어/파이썬 & 장고 2019. 1. 27. 18:23
파이썬에서 어떤 값을 더할 때 +를 사용하여 새로운 변수에 결과값을 담을 수도 있고 기존에 사용하던 변수에 +=로 값을 대체할 때가 있습니다. 더 나아가 각 리스트를 합칠 때도 사용됩니다. 아래는 리스트를 합치는 예시입니다.a = [1,2] b = [3,4] c = a+b print(c) # [1, 2, 3, 4] a += b print(a) # [1, 2, 3, 4] 위 결과만 봤을 때 +와 +=의 차이가 없는 것처럼 확인됩니다. 그러나 아래 예시를 보면 똑같다 라는 가정이 틀렸다는 것을 볼 수 있습니다.a = [1,2] b = (3,4) c = a+b Traceback (most recent call last): File "", line 1, in TypeError: can only concatena..
-
[AWS] 람다 레이어(Lambda Layer)란?AWS & GCP 2019. 1. 27. 16:04
특정 패키지 또는 라이브러리를 여러 람다 함수에서 공유하여 사용하는 경우가 자주 있습니다. 이러한 공유되는 패키지는 비즈니스 로직의 구현을 간소화하기 위해 추가하는 사용자 정의 코드이거나, 하나 이상의 함수가 사용하는 코드이거나, 표준 라이브러리일 경우가 많습니다. 람다 레이어의 출시 이전에는 공유되는 패키지와 해당 패키지를 사용하여 실제 동작을 원하는 코드를 패키징하여 람다에 배포해왔습니다. 이러면 패키징의 사이즈가 커진다는 점과 다른 람다함수에서 해당 공유 패키지를 사용할 수 없다는 단점이 있었습니다. 람다 레이어는 이러한 불편한 점을 해소하기 위해 나왔습니다. 공통적으로 사용할 패키지 또는 라이브러리를 압축 파일에 담아 하나의 람다 레이어로 업로드한 다음, 사용자는 함수 코드를 변경할 필요 없이, ..
-
[AWS] 람다(Lambda)란?AWS & GCP 2019. 1. 27. 15:28
AWS람다를 찾아보면 서버리스(serverless) 라는 단어를 볼 수 있습니다. 처음 접했을 때 서버가 없는데 어떻게 요청을 받고 실행할 지 햇갈렸는데 여기서 서버리스는 내가 요청받고 처리하는 서버가 없는 것을 뜻합니다. 한 마디로 내 서버가 필요없이 AWS 서버가 알아서 처리해준다는 것입니다. 간략하게 람다를 사용하는 목적은 서버에 대한 걱정 없이 코드를 실행하고 사용한 컴퓨팅 시간에 대해서만 비용을 지불합니다. 아래에서 좀 더 자세하게 설명하겠습니다.AWS Lambda 란? 서버를 프로비저닝하거나 관리할 필요 없이 코드를 실행모든 유형의 애플리케이션이나 백엔드 서비스에 대한 코드를 별도의 관리 없이 실행 가능코드를 업로드하면 Lambda에서 높은 가용성으로 코드를 실행 및 확장하는 데 필요한 부분을..
-
이더리움 고스트 프로토콜 (Ethereum GHOST Protocol) 이란블록체인 2019. 1. 23. 21:47
고스트 프로토콜(GHOST Protocol)은 비트코인의 성능 향상과 보안성 향상을 위해 나온 알고리즘입니다. 이더리움은 고스트 프로토콜을 수정하여 적용한 결과, 빠른 블록 생성 속도를 가지면서 보안성도 높이는 결과를 얻었습니다. 비트코인은 블록 생성 속도가 느리기 때문에 stale 블록의 생성확률이 낮고 보안성이 높습니다. 반면, 이더리움은 블록 생성 속도가 빠르기 때문에 stale 블록의 생성확률이 높고 보안성이 낮습니다. 이러한 문제를 보안하기 위해 이더리움은 고스트 프로토콜을 적용하여 stale 블록을 잘 처리하고 보안성도 높였습니다.고스트 프로토콜은 stale 블록의 처리에 대한 알고리즘이라고 볼 수 있습니다. 고스트 프로토콜은 bitcoin을 위해 생성됬습니다. 비트코인은 블록생성시간이 약 1..
-
[Django] queryset 결과 합치기언어/파이썬 & 장고 2019. 1. 22. 21:24
합칠 대상의 결과가 2개 이상인 경우union()union()를 사용해서 1개로 합칠 수 있습니다. union()의 2번째 인자는 중복을 허용할지에 대한 여부인데 기본값은 False로 중복을 허용하지 않습니다. (중복데이터일 경우 중복제거)result = a.union(b, all=True)결과가 쿼리셋 리스트 타입이기 때문에 ORM 형식을 그대로 사용할 수 있습니다.| 연산자| 연산자를 사용하여 손쉽게 쿼리셋 타입 리스트를 합칠 수 있습니다.result = a | b결과가 쿼리셋 리스트 타입이기 때문에 ORM 형식을 그대로 사용할 수 있습니다. + 연산자+ 연산자를 사용하기 위해선 각 쿼리셋 리스트 타입을 일반 리스트 타입으로 변경한 후 합칩니다.a = list(a) b = list(b)result =..