분류 전체보기 (63) 썸네일형 리스트형 1) EKS 따라해보기. docker 관련해서 공부할때 gcp에 instance를 만들고 k8s를 설치하고 pod배포 하는것까지는 해봤는데 aws의 managed k8s인 eks도 궁금해서 eks를 만들어 공부해 보기로 했다. 실제로 eks는 설치는 AWS의 매커니즘에 익숙한 사람이면 쉽게 할수 있는 수준이긴 했다. 아래 내용은 AWS EKS document를 참조해서 공부한 내용이다. docs.aws.amazon.com/ko_kr/eks/latest/userguide/what-is-eks.html 이란 무엇인가요?Amazon EKS? - Amazon EKS 이 페이지에 작업이 필요하다는 점을 알려 주셔서 감사합니다. 실망시켜 드려 죄송합니다. 잠깐 시간을 내어 설명서를 향상시킬 수 있는 방법에 대해 말씀해 주십시오. docs... 5) AWS ECR에 docker images Push하기 앞에서 만들어 놓은 docker images를 aws ecr에 올려 보자. 먼저 AWS 계정을 만들고 테스트를 위한 EC2 instance를 하나 만들자. 이제 순서는 아래와 같다. 1) AWS ECR repository를 생성한다. 2) IAM > 사용자에 ECR 관련 권한추가 3) 만들어 놓은 EC2 instance에서 ecr에 접속하고 docker push 하면 끝. 매우 간단하다. 1) AWS ECR 생성 간단히 ecrtest라는 repository를 생성했다. 2) IAM > 사용자에 ECR 관련 권한추가 권한은 AmazonEC2ContainerServiceforEC2Role , AmazonEC2ContainerRegistryFullAccess 두개를추가헀다. 3) 만들어 놓은 EC2 insta.. 4) Go Dockerfile 만들기 ( go mod ) 앞에서 만들어 놓은 helloTest 를 Dockerfile로 만들어서 서버에서 실행시켜 보자. 먼저 Dockerfile을 만드는 방법은 생각보다 단순하다. 1) single stage 방법 FROM golang:alpine ADD . . RUN go build main.go CMD ["./main"] 위와 같은 방법으로 하게 되면 go lib 를 모두 포함한 이미지가 만들어져 실제 docker image 사이즈 700M 이 넘어 갈만큼 커지는것을 확인 할수 있다. 사실 go 를 build 하고 나오는 실행 파일만 있으면 되는데 이미지에 불필요한 lib가 들어가는 모양이 되는것이다. 이를 해결하기 위해 Multi Stage 방법이 있다는것을 알게 되었다. 2) Multi Stage 방법 단순하다. go .. 3) GO Module 이란? GO Module 테스트 GO를 공부하면서 가장 이상하고 불편했던 점이 Java와 다르게 workspace가 GOPATH가 되어야 한다는것이다. workspace를 변경하고 싶으면 환경변수에서 GOPATH를 변경하고 IDE를 재시작해야하는 굉장히 불편한 상황이 계속 연연출되었다. 처음에는 에이 아니겠지 설마 이렇게 불편하게 컴파일을 해야 하나? 하면서 의심하다가 ... 결국 그래야만 한다고 생각하면서 GOPATH를 수정했는데. GO Module이 있다는것을 알게 되었다. 그러면 그렇지! 사람들이 이렇게 불편하게 놔두진 않았을것이다. GO Module 은 Java의 gradle or Maven Dependency를 관리해주는 기능이다. 아주 단순하다. 1) GO Path와 다른 폴더에 main.go를 작성 기존 GOPATH = C.. 2) GO RESTAPI 만들기. 설정된 개발환경에서 main.go에 아래와 같이 간단한 rest api 를 만들어 봤다. package main import ( "fmt" "log" "net/http" ) func main(){ //fmt.Println("main test 입니다.") router := httprouter.New() router.GET("/hello", HelloAPI) log.Fatal(http.ListenAndServe(":8080", router)) } func HelloAPI(rs http.ResponseWriter, r *http.Request, ps httprouter.Params){ fmt.Fprintln(rs , "Hello GO!") } 위 코드를 httprouter 라는 package가 import 되.. 1) GO 설치하기 먼저 간단히 GO는 2009년도에 구글에서 개발한 언어이다. 특징은 간결하다 . 가볍다 . 스레드보다 가벼운 Go루틴이라는 동시성 제어기능을 제공한다. 자체 GC기능을 제공한다. Docker를 GO로 개발했다. 등이 있는것 같다. 여러내용을 읽어 본 결과 GO의 가장 큰 장점은 간결한 소스코드와 뛰어난 성능이라고 느껴졌다. 예를 들어 자바로 REST API를 만들면 유휴 상태일떄 기본적인 메모리를 사용하고있는 반면 GO는 거의 메모리를 사용하지 않고 있고 . 실제 초당 요청 처리수도 자바에 비해 적은 리소스를 사용하고 더 많은 요청에 대해 처리가 가능한 데이터들이 많이 있었다. 그래서 기존 java 로 만들어진 REST API들을 GO로 바꿔 보고자 GO에 대해 공부하기로 한다. 아래 사이트에 접속해서 .. 2) GRPC Client - Server 양방향 통신 1부에서 간단한 client - server의 1:1 방식에 대해 테스트 해봤다 . 이제 clien -server의 1 : N , N : N 방식에 대해 테스트 해보자 먼저 앞에서 작성한 .proto파일을 수정해서 server와 client 양쪽 소스를 재빌드한다. 1) .proto 파일을 아래와 같이 수정 syntax = "proto3"; option java_multiple_files = true; option java_outer_classname = "SampleProto"; option java_package = "com.devracoon.grpc.proto"; package com.devracoon.grpc; message SampleRequest { string userId = 1; strin.. 1) GRPC 란 ? springboot를 이용해서 rest api로 backEnd를 개발하다 보면 성능에 대한 부분을 많이 고려하게 되고 생각하게 된다. 최근에 성능에 문제가 생겼을때 어떻게 하셨어요? 라고는 질문을 받았다. 보통 지금까지는 성능에 문제가 생겼을때 infra를 확장하는 방식 즉. 쿠버네티스의 경우는 worker node를 늘리고 해당 api에 대한 pod를 늘리는 방식으로 처리를 했다. rest api는 단일 Request 에 단일 Response만 주기 때문에 Client는 여러번의 Request를 보내 서버에 처리를 요청하게 되는 경우가 많다. 이렇게 되면 사실 불필요한 네트웍 비용이 발생하기도 하고 성능에도 크게 좋지 않은 결과를 가져 올 수 있다. 이를 해결하기 위해 소켓통신이나 Soap , RPC .. 이전 1 ··· 3 4 5 6 7 8 다음