전체

    tcpdump와 wireshark를 이용한 패킷 분석하기

    오늘은 간단하게 tcpdump와 wireshark를 이용해서 내 패킷이 loss가 되고 있는건지 확인해보려고 한다.그러기 위해선 acl을 수정하면서 가동할 서버가 필요하고 이를 위해 AWS EC2를 활용해서 진행해보려고 한다.먼저 들어가기 앞서 tcpdump와 wireshark에 대해 알아보자.TCPdump란?tcpdump란 unix 계열 운영체제에서 제공해주는 커맨드로 네트워크 인터페이스를 통과하는 패킷의 내용을 캡처하고 분석할 수 있게 해주는 도구이다. 그러면 tcpdump는 어떻게 사용하는 걸까? 리눅스에서 사용하는 커맨드는 주로 man이라는 명령어를 이용해서 해당 커맨드에 대한 옵션 정보나 디테일 한 정보를 볼 수 있다. 커맨드 창으로 보기 좀 불편한 경우엔 해당 링크를 통해 tcpdump에 자세..

    리눅스에서 ln과 ln -s의 차이

    오늘은 리눅스 파일 시스템에서 하드링크를 만드는 방법인 ln과 소프트 링크(심볼릭 링크)를 만드는 ln -s 옵션에 대해 알아보고자 한다.목차inode 소개리눅스에서 링크란?하드링크 소개소프트링크 소개마무리 1. inode 소개먼저 들어가기 앞서 inode에 대해 사전 지식이 필요하다. inode는 유닉스 파일 시스템에서 사용하는 자료구조로 파일, 디렉토리 등 파일 시스템에 관한 정보를 가지고 있다. 즉, 파일의 메타데이터라고 생각하면 되며 inode의 구조는 아래처럼 되어있다.그림과 같이 inode는 파일의 권한 정보, 소유자 정보, 크기, 생성 및 수정 시간, 블록크기 등을 가지고 있다. 이때는 direct blocks은 파일의 데이터 블록을 직접 가리키는 주소가 저장되어 있으면 direct bloc..

    AWS Code Series를 이용한 자동화 구성하기

    오늘은 AWS Code Series(AWS CodeCommit, AWS CodeBuild, AWS CodeDeploy, AWS CodePipeline)라고도 불리는 AWS CI/CD 서비스에 대해 알아보고 아키텍처를 구성해보려고 한다. 아키텍처를 구성하기 앞서 CI/CD란 무엇이고 AWS Code Series의 특징에 대해 알아보도록 하겠다. 목차 CI/CD 소개 AWS Code Series 소개 데모 아키텍처 소개 자동화 구성 데모 마무리 1. CI/CD 소개 DevOps를 하면 빼놓을 수 없는 얘기가 자동화 파이프라인이라고도 불리는 CI/CD이다. CI/CD를 구축하는 궁극적인 목적은 소프트웨어 개발 라이프사이클을 간소화하고 가속하하여 개발자가 빠르게 변경 사항을 반영할 수 있도록 하기 위해서이다. ..

    Flink Kubernetes Operator Concept

    오늘은 Flink를 Kubernetes에서 사용하는 방법 중 Kubernetes Operator를 사용하는 방법에 대해 알아보고자 한다. Kubernetes Operator란 공식 문서에 나와 있는 것처럼 custom resource를 사용하여 애플리케이션이나 컴포넌트의 lifecycle을 관리하는 역할을 하는 software extensions이다. Apache 재단에 있는 Flink Kubernetes Operator를 사용하게 되면 JobManager와 TaskManager를 손쉽게 사용할 수 있으며 해당 Operator가 관리하는 CRD(custom resource definition)을 가지고 애플리케이션을 배포할 수 있다. 목차 Flink Kubernetes Operator 소개 Archite..

    k8s service webhook issue 해결

    오늘은 k8s를 활용하면서 겪었던 webhook issue에 대해 적어보려구 합니다 !! 일단 제가 k8s에 대한 경험이 많이 없어서 이 문제를 조금 오랫동안 해결하려고 노력했던 것 같고 진짜 허무하게도 CNI 플러그인 이슈였더라구요 ㅎ,,, 😂 저는 처음에 DNS 문제이거나 k8s apiserver가 webhook svc에 대한 ca를 제대로 읽지 못하는 문제, 아니면 저의 token이 잘못됐다는 생각을 했던 것 같아요.. 하지만 configmap과 secrets을 봤을 때 모두 다 정상적으로 되어 있었구 처음에는 DNS 오류가 있긴 했지만 이후에 해결해도 문제가 나더라구요 ㅎ,, cert-manager는 certificate를 관리해주는 일종의 컴포넌트라고 생각하시면 될 것 같구 저는 flink가 c..

    Apache Flink에 대해..

    이번에는 회사에서 Flink를 구축하고 있어서 정리했던 내용을 조금씩 다시 블로그에 정리해보면서 공부하려고 합니다!! 그리고 슬프게도 한국에는 Flink에 대한 자료가 그렇게 많이 없더라구요.. 저 뿐만 아니라 많은 분들이 공유를 했으면 좋겠네요 ㅎㅎ Apache Flink는 Bounded나 Unbounded stream data를 처리하기 위한 상태 기반의 오픈 소스 분산 엔진입니다. 여기서 stream은 물 흐르듯 데이터가 흘러가기 의미를 가지고 있고 실시간 데이터 처리에서는 계속해서 데이터가 들어오기 때문에 stream이라는 단어를 쓰고 있다고 합니다! stream 데이터를 처리하는 데이터 처리 엔진으로 Flink 이외에도 Spark 같은 것도 있고 Kafka Streams으로도 실시간 데이터 처리..

    2023 5회 OIDC 후기..

    오늘은 이전 방학 때 했던 OIDC 참가했던 후기를 남겨보려고 합니다 ! https://www.oidc.co.kr/ 제5회 오픈 인프라 개발 경진대회 (OIDC 2023) 🎬 하이라이트 영상 www.oidc.co.kr 처음에 OIDC에 참가하려고 했던 이유는 Cloud Native 기술을 실제 프로젝트에 적용해보고 싶어서 참여하게 됐어요 :) 대회는 4월 3일부터 접수를 신청해서 그 전까지 서류를 내는 기간이었는데 저희는 이 기간 동안에 관련 기술들을 온보딩하고 서류 작성을 준비했어요! 저희 같은 경우는 지정주제를 선택하게 됐는데 관련해서 프로젝트 아이디어를 내는게 쉬운 일이 아니었습니다ㅠㅠ😭 아무래도 학생 입장에선 경험이 없다보니 클라우드 네이티브 기반해서 좋은 아이디어를 떠올리기도 어려웠고 생각을 해..

    Go Fiber 간단한 예제

    이번에는 go를 이용해서 웹서버를 만들어보려구 한다! go에는 기본적으로 `net/http`라는 내장 패키지가 존재하고 github의 여러 개의 웹프레임워크가 존재하는데 이쪽에 가면 go web framework를 잘 정리해놔서 참고하면 좋을 것 같다! 아래는 간단하게 net/http를 이용해서 http req를 처리하는 코드이다. `http.HandleFunc`을 이용해서 새로운 핸들러를 등록할 수 있고 `ListenAndServe`를 통해 몇번 포트로 listen할지 정할 수 있다. `http.Request`는 request와 파라미터에 대한 정보를 담고 있다. GET 요청에 대한 파라미터를 받으려면 `r.URL.Query().Get("test")`를 이용하면 되고 POST에 대한 데이터를 가져올 경..

    CI / CD 에 대해서..

    오늘은 CI / CD가 무엇을 의미하고 tool은 어떤 것들이 있는지 알아보고자 한다!! 일단 CI / CD란 일련의 소스 코드 빌드부터 배포까지의 자동화 과정을 통틀어서 말한다. CI(Continuos Integration)은 지속적 통합을 의미하며 build의 자동화, 유닛 및 통합 테스트의 과정을 말하고 CD(Continuos Delivery)는 지속적 배포를 의미하며 build된 코드를 release하고 production으로 deploy하는 과정을 말한다. 현재 CNCF에 등록된 CI/CD를 위한 tool들이 jenkins, github actions, argoCD등 여러 종류의 도구들이 존재한다. 그 중에서 오늘은 github action이랑 aws의 code series에 대해 알아보고자 한..

    AWS Lambda 내용 정리

    AWS Lambda는 서버를 프로비저닝하거나 관리하지 않고도 코드를 실행할 수 있는 서버리스 컴퓨팅 서비스입니다! 보통 이벤트 기반 서버리스 컴퓨팅 서비스를 언급할 때 람다를 언급하게 되는 것 같아요 AWS Lambda를 사용하면 애플리케이션 코드를 실행하기 위해 인프라를 프로비저닝하거나 관리할 필요가 없기 때문에 코드를 더욱 빠르게 배포하고, 확장성 있는 애플리케이션을 빌드하고, 더욱 높은 가용성을 제공하는 데 집중할 수 있어요 그리고 람다는 사용한 만큼만 비용을 지불하고 함수 요청 수와 코드를 실행하는 데 걸리는 기간에 따라 요금이 청구돼서 만약 서버를 계속 띄워놓는 상황보다 필요할 때마다 처리하는 인프라가 필요하다면 람다가 비용적으로도 선택이 합리적이어서 어플리케이션을 람다로 구성하는 경우도 있더라..