Service Mesh - Kubernetes가 있는데 왜 Istio가 필요한가요?
·
kubernetes
사실 wargame 프로젝트에서 운영하면서 도입해보고 싶었는데, 공부하면서 더욱 불필요하다고 느꼈다.일단 마이크로서비스의 수나 아키텍처 복잡도 수준이 Service Discovery나 API Gateway 정도로 관리하기 어려울 정도의 규모가 안된다. 좀 더 프로젝트가 확장되면서 양질의 서비스가 추가된다면 그때서야 다시 도입을 고민해보겠다.지금은 회사에서 쓰는 것도 아니고 '이런게 있다~' 정도만 이해하고 넘어가겠다.​ 대충 이런 궁금증Istio가 Kubernetes에서 실행되는 이유가 뭔가?클라우드 환경에서 배포되는 애플리케이션 아키텍처에서 Kubernetes와 Service Mesh의 역할이 무엇인가?Istio는 Kubernetes의 어떤 측면(aspect)를 확장하는가? 혹은 어떤 문제점을 해결해주..
Windows In Docker - C++ 프로젝트의 컨테이너화 빌드 및 관리
·
windows
Windows 환경의 C++ 프로젝트의 컨테이너 이미지 관리혹자는 Linux 환경에서 C++ 빌드도 되는데, 그냥 리눅스로 도커 이미지 빌드하면 안되냐고 할 것이다. 하지만 제목에서 말해주듯 IOCP 게임서버에 관한 내용으로, IO Completion Port는 윈도우 OS의 커널 오브젝트이다.Overlapped IO를 통해 OS에 종속될 수 밖에 없는 Proactor 비동기 기술의 비애라고 볼 수 있겠다. 어쩔 수 없이 Windows 플랫폼을 고집해야하는 상황이고, k8s 환경에서 다른 마이크로서비스들과 함께 관리하기 위해서라도 컨테이너화 빌드도 필요한 상황이다.  핵심 : Visual Studio 빌드 시스템 사용 (.vcsproj 프로젝트 파일) FROM mcr.microsoft.com/window..
사용자 경험 개선을 위한 시도 (Banner 구현, Addressable 패치)
·
project/wargame
비정상적인 좌표 이동에 대한 검증(Validation)아직 패킷 암호화 등의 처리를 하지 않았다. 어차피 막아도 뚫린다는 생각이 있어서 먼저 로직상의 검증부터 구현했다. 객체의 좌표 이동시 이전 위치와 speed를 고려해서 검사하고, 통과해야 움직여준다.로직상 비용이 드는 연산이 아니라 부담은 없다. 그러나 시작할때 생성되는 병종들과 충돌해서 사용자가 밀려나는데, 서버에서는 위치 검증에 실패해서 비정상적인 이동으로 판단함.물론 안 겹치게 병종들을 떨어트려서 생성하면 당장은 그럴듯하겠지만 근본적인 문제를 해결하진 못한다. 충돌(Collision) 등의 물리 연산도 서버에서 진행해야하는건지 의구심이 들기 시작함..   Csharp ↔ Cpp 마샬링 문제std::string과 C#의 string 간에 충돌로 ..
게임 서비스에 대한 취약점 모의해킹 이벤트
·
project/resistance
게임 서비스에 대한 모의해킹 이벤트기존 resistance 프로젝트를 kubernetes로 배포하면서 모의해킹 이벤트를 소소하게 준비했다.음 사실 kubernetes로 서비스를 배포해서 운영하는데 테스터들이 필요했다.​동아리에서 가볍게 참여할 인원을 모집했는데, 외부 인원까지 합쳐서 20명 가량 모여서 모의해킹을 진행했다.​그리고 명세서나 취약점 보고 양식을 노션으로 배포해서 이벤트를 진행했다.​게임도 원래 모바일 게임인데 WebGL로 포팅해서 가볍게(가볍지 않았다.) 웹으로 배포해서 진행했다. 모바일에서도 열리긴 하던데.. 솔직히 해상도 안맞고 게임하기 불편한 부분이 좀 보였다.​애초에 개발 단계에서 어떤 취약점도 막지 않았다. jwt와 Vault 라이브러리로 비밀번호 암호화하는 정도?ssh/tls 설..
Kubernetes 운영과 모니터링 및 오류 해결
·
project/resistance
resistance는 membership, dedicated, business, logging 총 4개의 마이크로 서비스로 구성되는 MSA 서비스이다.​ 아직 모니터링은 설치도 안했는데 배포하니까 총 Pod 64개가 나왔었다.​ 흠 4일정도 내내 틀어두니까 22$ 나왔다​NAT Gateway의 Data process보다 시간별 비용이 더 나온 것으로 보아 성능적 이슈는 안보였다. 근데도 오류 해결할때는 노드 성능탓만 했다ㅎㅎ​대략 게시글 7000개의 dummy 데이터를 넣어서 진행해봤는데, 무의미하게 데이터양만 늘린거 같다.​백엔드에서 동시 다발적으로 트래픽 과부하에 걸릴 정도의 병목에 버티느냐가 관건인거 같다.​​운영 모니터링 - Prometheus for k8sHelm repo를 설치해서 Promet..
Kubernetes 배포를 위한 클라우드 환경 구축
·
project/resistance
resistance 게임 프로젝트의 MSA 서버도 k8s 환경에서 배포하고자 한다.​내가 개발한 서비스를 실제 운영 환경에서 직접 관리하고 유지보수할 능력은 있어야 한다고 생각했기에, kubernetes에 대해 공부해봤다.​정확한 기간은 가격 정책 모니터링을 해야 알겠지만 목표는 일단 일주일동안 풀가동해서 모니터링하고 분석해보기​​​Terraform을 이용한 EKS 리소스 설치IaC(Infrastructure as Code)는 말 그대로 개발자들에게 친숙한 코드로 Infrastructure를 다루겠다는 소리다.​수동적인 프로세스로 관리하던 시스템과 인프라를 소프트웨어 개발과 유사한 방식으로 정의해서 쉽게 관리할 수 있다.이 IaC의 도구로, Terraform이 가장 널리 사용되고 있고 Terraform ..
Github Action으로 시작하는 GitOps 파이프라인(AWS ECR, Github Actions)
·
backend
Github Actions이 뭘까?CI/CD와 같은 workflow를 자동화 할 수 있는 도구로, 2018년부터 깃허브에서 제공하는 서비스.​깃허브를 통해서 버전 관리나 협업하는 이상, 깃허브 내의 이벤트(push,pull,merge ...) 의 발생에 대해 정해진 동작을 실행해주는 Actions 기능은 Jenkins같은 CI 툴만큼이나 편리할 수 밖에 없다. Public 레포지토리는 제한있는 무료로 사용 가능함.​Github CLI를 사용하면 Repository를 push하지 않더라도 Branch의 Actions들을 실행하고 필요한 정보를 넘겨줄 수 있다.​​​들어가기에 앞서서, 알아둬야할 핵심적인 개념을 소개하겠음 Github Actions의 구성1. WorkflowEvent를 트리거로 여러 Job으..
구글 현직자분께 물어본 Kubernetes와 보그(Vogue) 비교
·
kubernetes
구글 사옥에 놀러갈 기회가 되어서 구글 클라우드 내부 인공지능과 보안 분야에 대한 강연을 들었다.구글 코리아 내에 두 분 계시는 클라우드 보안쪽 연구원분께서 안내를 해주셨고, 용기내서 궁금한 점을 물어봤다. ​ 구글에서 쿠버네티스를 설계한 걸로 아는데, 사내에서 쓰는 자체 기술과 어떤 차이점이 있나요?​ 구글은 쿠버네티스를 사용하지 않는다고 들은 기억이 있었는데 이유가 궁금했다. 구글 내에서 운영하고 있는 서비스들을 유연하게 관리하기 위해서 사내 컨테이너 오케스트레이션 보그(Vogue)를 개발해 운영하고 있었다. ​써보니까 너무 편리하고 괜찮았고, 이를 범용성 있게 다시 만들어서 오픈소스로 공개한게 쿠버네티스(kubernetes)이다.클라우드 리소스는 보통 하드웨어에 종속되는 편이라 범용 오픈소스로 출시..
ArgoCD를 이용한 무중단 배포하기(Canary 방식, argo-rollout)
·
kubernetes
운영환경에 어떻게 배포하는지 Continuous Delivery/Deployment에 대해 알아보자.​Deployment는 그냥 바로 배포 때려버리는거고, delivery는 그냥 deploy전에 명시적 승인 절차를 마지막에 한번 두는거라는 차이점이 있다.​신뢰할수 있는 테스트 진행, 무중단 배포가 가능하다는 전제 하에 Deployment 배포가 되어야한다.​배포시 고려해야할 사항애플리케이션 다운타임 최소화사용자에게 미치는 영향 최소화실패한 배포를 안정적으로 롤백하는 방법​무중단 배포의 전략다운타임 없이 서버를 운영할 수 있다.그러니까, 서버의 중단 없이 업데이트를 이루는 배포 전략을 말한다.   Rolling 배포서버를 차례대로 업데이트 시키는 방식. 장점 : 인스턴스를 추가하지 않아 관리가 간편 단점 ..
Service Mesh - Kubernetes가 있는데 왜 Istio가 필요한가요?
·
kubernetes
Istio가 Kubernetes에서 실행되는 이유가 뭔가?클라우드 환경에서 배포되는 애플리케이션 아키텍처에서 Kubernetes와 Service Mesh의 역할이 무엇인가?Istio는 Kubernetes의 어떤 측면(aspect)를 확장하는가? 혹은 어떤 문제점을 해결해주는가?Kubernetes, Envoy, Istio의 관계는 무엇인가?​대충 이런 궁금증​​​Service Mesh의 이해Service간의 마이크로화로 인해 Service의 수도 많아지고, 상호간의 연결 복잡도가 증가하면서 각 Service들을 효율적으로 관리할 필요가 생겼다. Service Mesh : Service를 발견-연결-모니터링하는 과정​애플리케이션에 대한 라우팅, 보안 및 안정성 기능을 추가하고 네트워크 흐름을 관리하고 제어하..
Docker 데몬 없이 컨테이너 이미지 빌드(kubernetes Docker 지원 중단)
·
backend
컨테이너화는 애플리케이션 배포의 필수적인 요소로 자리잡았고, Docker로 대표되는 가장 인기 있는 기술이다.​다른 k8s 문제에 대해 트러블 슈팅중에 뒤지다가 검색 키워드로 떠서 좀 찾아봤다.​kubernetes is deprecating Docker...네?kubernetes에서 docker 지원을 중단하려고 한다는 아티클을 발견해서 허겁지겁 들어가서 탐독했다.​​휴 다들 진정해 사격중지​아래 링크는 k8s 공식 문서에서 제공하는 번역본이다.https://kubernetes.io/ko/blog/2020/12/02/dont-panic-kubernetes-and-docker/​ 웃긴게, 하도 논란되니까 해명하는거 같은 내용이다.​k8s은 v1.20 이후 컨테이너 런타임(CRI)으로서 도커를 사용 중단(d..
kubernetes 환경에서 Apache Kafka cluster를 구성해보자 (Operator 패턴)
·
kubernetes
Kubernetes 환경에서 Apache Kafka cluster 구성하기​생각해보니 정작 Kafka에 대한 소개를 한 적 없이 그동안 블로그에 썼다는 언급만 계속 해왔다.조만간 자세한 내용을 정리해서 올리겠음​​​​Apache Kafka on Kubernetes - strimzi OperatorKafka를 Strimzi operator를 사용해서 운영하는 방법을 찾아서, Helm으로 Apache kafka를 구성해봤다​https://strimzi.io/​ 왜 Strimzi은 Operator 패턴으로 Kafka를 배포하는가?Operator 패턴이 Kafka Cluster를 배포하기 편리하게 구성Kafka의 가용성 확보에 필요한 Zookeeper 또한 Operator가 관리해준다는 편리함Kafka Brid..