[Go언어] tcp로 웹 서버 구동시 tcp6로 Listen
Golang echo framework로 웹 서버 실행 시 tcp를 지정하여 IPv4를 사용하도록 설정을 했는데도 서버가 실행된 후 LISTEN 상태를 보면 아래와 같이 tcp6만 실행되어있다.netstat -anp | grep 8080 (Not all processes could be identified, non-owned process info will...
View Article[Go언어] embedded struct bson marshaling 시 struct 이름으로 키가 생성되는 문제
아래와 같이 Sample struct에서는 Inner struct를 embedded 하고 있다. type Inner struct { ID string `json:"id,omitempty" bson:"_id,omitempty" Name string `json:"name" bson:"name"` CreatedAt int64...
View Article[k8s] Image Pull 실행 시 ECR 로그인 적용하기
여러 팀과 함께 서비스를 운영하다보면 현재 사용 중인 서버가 속한 AWS Account 외에 다른 Account의 ECR에 존재하는 컨테이너 이미지를 Pull 받아야하는 경우가 있다. 이 때 해당 Account에서 ECR의 read only 권한을 가진 IAM User의 Access Key를 사용하여 로그인을 수행한 후 컨테이너 이미지를 Pull 받을 수...
View Article[리뷰] 데이터 과학을 위한 통계
데이터 과학을 위한 통계소프트웨어 엔지니어로 일하고 있지만 수포자(수학포기자)로 살아왔기 때문에 수학 관련된 공부는 항상 기피를 했었다. 게다가 게임 개발자로 오랜 시간 업무를 해왔기 때문에 생각보다 전문적인 수학 지식이 필요로 하지는 않았었다. 그렇게 지금까지 수학과는 거리감을 유지하면서 지내왔는데 몇년 전 부터 조금씩 빅데이터와 관련된 업무나 스터디를...
View Article[쿠버네티스패턴] 7장 배치 잡
배치 잡이란?짧은 수명을 가진 파드를 분산 환경에서 완료될 때까지 안정적으로 실행하는 기능이다.독립된 원자 작업단위, 즉 더 이상 쪼갤 수 없을 정도의 작은 작업 단위를 관리하는데 적합하다. 문제미리 정의된 일정 시간의 작업단위를 안정적으로 실행한 후 컨테이너를 종료하는 것이 필요한 경우가 있다.쿠버네티스에서는 아래와 같이 파드를 생성하는 방법이...
View Article[nginx] 정규표현식으로 패턴 매치 후 proxy pass 시 쿼리 파라미터 포함하기
Nginx를 사용하면서 패턴에 매치하는 Request를 Proxy pass로 전달 할 때 쿼리 파라미터가 포함되지 않아 어플리케이션 레벨의 문제인 것으로 생각하고 한참을 고생했다. 여기서 쿼리 파라미터는 아래 예로 든 주소에서 물음표(?) 뒤에 오는 키-값들을...
View Article[Docker] Secret 사용 해보기
Docker Secret을 사용하면 아래와 같은 민감한 데이터를 안전하게 관리할 수 있다.사용자 패스워드TLS 인증서 및 키SSH 키데이터베이스 접속 정보일반 문자열 및 바이너리 (최대 500kb 크기) Docker Secret 사용 시 컨테이너 내에서는 평문으로 유지되고, 컨테이너가 중지되면 Secret도 함께 제거된다. Docker Secret은...
View Article[k8s] ALB Ingress 사용 시 다수의 리스너 등록하기
목표Amazon EKS ALB Ingress controller를 사용하여 ALB를 생성하였고, 하고자하는 목표는 아래와 같았다.Ingress 설정으로 Listen Port를 HTTPS(443) 포트로 지정하였고, Ingress의 rules에 정의되어 있는 대로 URL Path 에 따라 각각 정해진 서비스로 traffic routing 한다. (URL 기반...
View Article[Go언어] for 루프에서 포인터 사용 시 동일 객체 참조 문제
문제아래와 같이 for 루프를 사용했다. for _, data := range sampleDataSlice { GetStore().storeOne(&data) }위 코드를 실행하면 저장된 모든 데이터가 동일한 값을 가지게 된다. 원인위 코드에서 sampleDataSlice는 slice 이기 때문에 for 루프의 변수로 인덱스와 현 루프의 객체를 변수에...
View Article[k8s] DaemonSet 실행 시 Pending
문제DaemonSet으로 Pod를 실행하면 각 워커노드에 Pod가 하나씩 실행이 되는데 특정 노드에서만 Pending이 발생하는 현상이 있었다. example-9sz7d 1/1 Running 0 3d16h 10.0.62.16 ip-10-0-38-38.ap-northeast-2.compute.internal <none> <none>...
View Article[k8s] kube-prometheus #1 - 설치
728x90Amazon EKS를 사용하면서 초기에 Kubernetes 모니터링을 위해 Container Insights를 사용하였으나 500개 이상의 Custom Metric이 CloudWatch에 추가되면서 많은 비용이 발생하게 되었다. 비용 절감을 위해 Container Insights에서 현재는 Prometheus로 변경을 진행하였고,...
View Article[k8s] kube-prometheus #2 - 설정 변경
728x90이 포스팅에서는 kube-prometheus를 사용하여 Prometheus가 이미 설치되었다고 전제하고 있습니다. 설치가 아직 안된경우 이전 포스트인 [k8s] kube-prometheus #1 - 설치를 참고하시기 바랍니다. kube-prometheus는 CRD(Custom Resource Definition)를 사용하여 구성되기 때문에 직접...
View Article[리뷰] 스파크 완벽 가이드
728x90 개발 업무를 진행하면서 서비스를 런칭 했을 때 사용자들의 행위나 서비스가 제공하는 각 기능에 대한 가치를 파악하기 위해 데이터 분석을 해보고 싶다는 생각을 항상 해왔었다. 이 전에는 게임 서버 개발 진행과 병행하여 엘라스틱서치를 도입해 데이터 분석을 위한 준비를 했었고, 서비스 런칭 후 이를 통해 사업부와 협업하여 사용자 행위 지표에 대한 다양한...
View Article[Go언어] API 서버간 내부 통신 시 too many open files 문제
728x90다수의 API 서버를 실행 중이고, 각 서버간에는 주기적으로 상호 통신을 실행하고 있다. 이 때 일정 시간이 경과하면 아래와 같은 오류가 발생하면서 먹통이 되는 현상이 발생하였다.dial tcp: lookup 127.0.0.1: too many open files 먼저 메시지 내용 처럼 현재 얼마만큼의 파일이 Open 되었는지 확인해보기 위해...
View Article[IDE] Goland 컴파일 시 already exists and is not an object file 에러
728x90Goland 2020.3 (2020.11.25) 버전으로 업데이트 이 후 최초 컴파일에는 성공하지만 이 후부터는 이미 존재한다는 오류와 함께 컴파일에 실패하는 경우가 반복되었다. 해결하기 위해 아래와 같이 Ctrl + Shift + A를 클릭 후 표시되는 Actions 입력창에 Registry라고 입력한다. 아래 그림과 같이...
View Article[리뷰] 클라우드 핀옵스
728x90 회사 업무와 개인 프로젝트 모두 클라우드를 적극 사용하고 있고, 그 중에서도 AWS에 의존도가 높다. AWS를 사용하다보면 나도 모르게 새어나가는 비용이 있기 마련인데 책을 읽으며 회사에서 사용하고 있는 리소스들을 살펴보니 불필요하게 비용을 지불하고 있는 것이 꽤 많았다. 곰곰히 생각해보니 회사에서 운영하는 리소스의 경우에는 내 개인돈이 나가지...
View Article[리뷰] 일상 속 사물이 알려주는 웹 API 디자인
728x90 #1누구나 사용하고 있고 다들 잘 알고 있을 것이라 생각하고 있어서 너무나 중요하지만 가끔 소홀하게 되는 것들이 있다. 나에게 있어서는 API가 바로 그런 것들 중 하나였다. API를 개발하고 있는 개발자이기 때문에 API에 대해 잘 모른다는 것을 인정하기 싫었고 시간들여 공부하는 것 조차 기본도 모르는 것 처럼 여겨질까봐 잘 하지 않았던 것...
View Article[AWS] 특정 Policy가 할당된 Role 또는 User 찾기
728x90아래와 같이 AWS로부터 정책이 변경된다는 메일을 받았고, 해당 Policy가 할당된 사용자나 Role, Group을 찾아야했다.Hello, We have detected that at least one user, group, or role in your account is currently employing either the...
View Article[리뷰] 이벤트 기반 마이크로서비스 구축
"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."현재 재직 중인 회사에서는 마이크로서비스 아키텍처를 지향하면서 프로젝트를 진행하고 있다. 마이크로서비스에 대해서는 경험이 없었기 때문에 개발 초기 설계 단계에서 공부도 많이 하고 고민도 많이 했었다. 또한 진행 중에도 서버간 통신이나 데이터 관리, 사내 다른 팀에서...
View Article[리뷰] 인프라 엔지니어의 교과서 - 요구사항 분석과 설계
길벗 출판사의 지원을 받아 작성한 리뷰입니다. 인프라에 관심이 굉장히 많은 백엔드 개발자 중 한사람으로써 인프라 관련 지식과 경험을 쌓으려고 노력하고 있다. 내가 겪었던 팀들은 개발자로 이루어진 팀들이었기 때문에 인프라 구축에 있어서는 처음 시도해보는 것들이 많았었다. 그 중 어려움을 느꼈던 것은 내가 개발하고 있는 서비스를 충족할 수 있는 인프라를 어떻게...
View Article