Redis Data structure - Hash

Redis Hash를 이용해서 하나의 key에 대한 값으로 여러 개의 sub key & value를 저장 할 수 있다. RDBMS의 테이블과 매우 비슷하다. 개인정보를 저장해야 한다고 하면 아래와 같은 Hash 테이블을 만들 수 있을 것이다. ||User_ID ||Email ||Name ||Age ||Address ||||yundream ||yundream@gmail.com ||Yun.Dream ||42 ||Seoul ||||foo ||foo@gmail.com ||Lee.foo ||34 ||Pusan ||||bar ||bar@gmail.com ||Kim.bar ||26 ||Seoul ||Redis Hash에서 User_ID가 key가 되고 email, name, age, address는 sub key가 된다.

HGET key field

2.0.0 부터 지원 시간 복잡도 Hash 필드에 저장된 값을 반환한다.필드에 저장된 값을 반환한다. 필드가 없다면 nil을 반환한다.> HSET myhash field1 "foo"(integer) 1> HGET myhash field1"foo"> HGET myhash field2(nil)

GoLang 디버거 - Delve

Delve는 Go 언어를 위한 디버깅 툴이다.# go get -u github.com/derekparker/delve/cmd/dlvdlv 실행파일은 $HOME/go/bin 에 설치된다. PATH를 등록하고 테스트해 보자.# export PATH=$HOME/go/bin# dlv versionDelve DebuggerVersionBuild테스트 애플리케이션을 설치하자. $ go get github.com/golang/example/...$ cd $HOME/go/src/github.com/golang/example/$ dlv debug .Type help for list of commands.b (break)를 이용해서 브레이크포인트(breakpoint)를 설정 할 수 있다. main 함수에 브레이크포인트를 설정해 보자.

golang - aws region 목록 가져오기

AWS GoLang SDK를 이용해서 AWS의 전체 리전(region)목록을 가져오는 프로그램을 개발하기로 했다. 개발한 프로그램은 최신의 AWS Region 정보를 보여주는 Joinc Wiki Plugin 개발에 사용 한다. 코드는 아래와 같다. 설명은 주석으로 대신한다.package mainimport ( "fmt" "github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/aws/awserr" "github.com/aws/aws-sdk-go/aws/session" "github.com/aws/aws-sdk-go/service/ec2")func main() { // AWS Session을 만든다. API를 호출할 리전은 api-northeast-2(서울)이다.

GraphQL

대량의 자원들이 인터넷으로 올라가면서 자원 식별해서 만들기, 삭제, 변경, 가져오기와 같은 작업을 효과적으로 수행하게 할지가 중요한 이슈가 됐다. 이 작업은 단순히 효율적이어야 할 뿐만 아니라 높은 상호운용성도 제공을 해야 했다. 서비스와 서비스가 서로 엮이면서, 다른 서비스의 자원도 가져다가 사용해야 하는 경우가 자주 발생하는데 각 서비스마다 서로 다른 형태의 작업식별및 작업명령 체계를 가직 있다면 웹 애플리케이션의 개발이 힘들어질 것이기 때문이다.

AWS security

AWS 보안

모듈을 이용한 Terraform 애플리케이션 구조

Terraform 0.12.23 버전 기준이다. for문은 0.12 버전부터 지원하기 때문에 0.12 이전 버전에서는 작동하지 않을 것이다. 아래와 같은 VPC를 Terraform 코드로 개발&배포 하기로 했다. 이 문서는 테라폼 모듈을 이용한 코드의 구조화가 목적이므로 VPC 외에 다른 AWS 자원들은 포함하지 않을 것이다. 1. VPC 1. Internet gateway 1. Public subnet 1. Private subnet 우리는 이 VPC 구조를 레퍼런스로 해서 DEV, STG, PRD 3개의 네트워크를 만들 것이다.

AWS IAM 모범 사례

IAM은 AWS 자원에 대한 인증, 접근 제어를 목적으로 제공하는 서비스다. 인프라의 보안을 강화하기 위한 가장 중요한 서비스다.여기에서는 IAM을 효과적으로 사용하기 위한 모범 살계를 정리한다. 강력한 패스워드의 사용은 필수 이지만 이것 만으로는 충분하지 않다. 대부분의 인증관련 침해사고는 패스워드 유출로 발생한다. 를 이용해서 다중 인증 시스템을 구성하자. MFA를 한다고 했을 때, 일반적으로 사용 할 수 있는 장치들은 아래와 같다.

MFA

MFA(Multi-factor authentication)는 두 가지 이상의 인증 방식을 성공적으로 통과해야지만 사용자에게 접근 권한을 주는 인증 방식이다. 보통 아이디/패스워드를 1차 기본인증 수단으로 하고, 여기에 다른 보조인증 수단을 추가하는 방식이다.MFA의 하위 인증 유형으로 2FA(Two-factor authentication)이 있다. MFA를 적용한다고 하더라도 2 단계를 넘어가는 경우가 없기 때문에 2FA를 주로 사용하긴 한다. MFA는 아래의 3가지 방법의 조합이다.

Terraform multi az vpc

를 기반으로 개선을 하는게 내용이므로 링크의 문서를 참고해야 한다.테라폼으로 구성할 인프라는 아래와 같다. 2개의 가용영역을 사용한다. 퍼블릭 서브넷과 프라이빗 서브넷을 구성한다. 2개의 가용영역에 배치되므로 총 4개의 서브넷이 배치된다. 퍼블릭 서브넷으로의 인터넷에서의 접근을 위해서 인터넷 게이트웨이를 만든다. 프라이빗 서브넷에서 인터넷으로 접근하기 위한 Nat gateway를 만든다.