목록development (74)
코딩하는 오징어
2023년이 어느새 저물어가고 있다. 한 해를 보내주기 전에 하는 것 들이 있다. 신년 다이어리 구매하기, 한 해의 회고록 작성하기. 특별할 것은 없지만 새해가 도착하기 전에 해놓지 않으면 이전 해에 미련이 남은 듯한 찜찜한 기분이 든다. 요즘은 종이 다이어리 대신 다이어리 앱을 많이 사용하지만 나는 아직까지 펜으로 종이에 나의 하루 계획을 작성하는 아날로그 감성이 좋다. IT업계에 종사하면서 기술 발전에 누구보다 빠르게 몸으로 체감하고, 소식을 듣고 있지만 내가 다루고 있는 영역 외의 트랜드에는 둔감한 편인 이유이기도 하다. 2023년 지구에는 업데이트가 너무 많았다. 약속이라도 한 듯이 소프트웨어 분야부터 기초과학 분야까지 세상을 뜨겁게 달구었다. 나는 화상을 입은 것 같다. gpt가 등장하면서 검색..
Netty는 ByteBuf를 data structure로 이용하고 있으며 ByteBuf는 RefereneCount (ReferenceCounted interface를 상속하고 있다.)를 통해 memory를 release할 지 결정한다. 여기서 memory를 release를 한다는 건 어떤 의미일까? java는 garbage collector가 메모리를 알아서 관리해줄텐데 잘못된 reference count 관리에 의해서 memory leak이 발생한다는 건 어떤 의미일까? 그러기 위해서는 먼저 Java NIO ByteBuffer에서 생성된 buffer가 더 이상 참조되지 않을 때 어떤 방식으로 메모리가 수집 되는 지 살펴보아야한다. ByteBuffer.allocate() 를 이용하여 heap buffer..
정말 오랜만에 글을 작성해본다. 블로그 관리에 소홀해진지 꽤 되었다. trouble shooting에 대한 부분이나 지식 정리를 evernote나 notion에 정리 하기 시작하면서 블로그와는 조금씩 거리가 멀어진 것 같다. 블로그에 글을 쓰려면 뭔가.. 문장이나 문맥 하나하나에 은근히 신경을 쓰게되어 작성하는 데 시간이 오래 걸리기도 하고, 사람들이 정말 궁금해하거나 혹은 검색으로는 찾기 힘든 부분을 쓰고 싶다 보니 주제를 선정하기에도 쉽지 않았다. 그래도 회고록은 매해 쓰다보니 이것 만큼은 꼭 써야겠다 싶었다. 그동안 작성한 회고록을 훑어봤더니 꽤나 큰 나의 추억거리 + 자산이라고 생각이들었다. 2019년, 2020년, 2021년에는 내가 무슨 생각을 하며 마무리했구나 되새김질을 할 수 있었다. 블로..
Asynchronous - Non Blocking framework가 화두가 된지 꽤 오랜 시간이 흘렀다. WebFlux, Akka, Node.js, Vert.X 같은 다양한 Asynchronous - Non Blocking 모델을 제공하는 Web Framework가 등장하였고, Spring 을 사용하는 다수의 팀들은 WebFlux를 선택하여 Blocking 모델인 WebMvc로 부터 벗어나 Asynchronous - Non Blocking을 지향하고 있다고 이야기하고 있다. 하지만 우리는 정말 Thread를 block 시키지 않도록 코드를 작성하고 있을까?? Asynchronous와 Non Blocking에 대한 이야기 부터 간단하게 소개하고 현재 우리는 어떤 방식으로 Asynchronous - Non..
리소스 할당 (Cpu & Memory) Pod안에서 실행되는 컨테이너가 사용하는 리소스를 제한하지 않으면 Node의 리소스가 무분별하게 사용될 수 있다. 여러 Pod이 존재한다면 Qos 클래스(BestEffort, Burstable, Guaranteed)에 따라 필요한 만큼의 리소스를 얻지 못할 수도 있다. requests, limits를 모두 설정하지 않았다면 리소스 할당 순위에서 뒤로 밀려 실행중인 Pod이 kill 당할 수도 있다. Pod에 리소스 설정을 하는 방법은 간단하다. 다음과 같이 template에 requests와 limits를 설정하면 된다. apiVersion: v1 kind: Pod metadata: name: play-k8s-app spec: containers: - name: p..
2021 회고 한 두살 나이를 먹을 때마다 느끼는건 시간이 점점 빨리 흘러간다 라는 것이다.. 백엔드 개발자로 첫 직장을 가졌을 때가 25살 이었는데 어느새 29살이 되어 버렸다. 시간은 상대적이기에 당연히 나이를 먹으면 먹을 수록 상대적으로 시간은 빠르게 흘러가는 것을 알고는 있었지만 체감하니 더 빠르게 느껴지는 것 같다. 1년에 1년 비중은 100%, 10년에 1년 비중은 10%, 28년에 1년 비중은 3.5%.. 나에게 1년이란 이제 너무도 짧은 시간이 되어버렸다. 2021년은 목표했던 학습량의 60%정도를 달성했던 것 같다. 수치로 보면 지지부진 하지만 그래도 많은 것들을 느끼고 배우게된 한 해였다. 2021.02.07 - [My Diary] - 2021년 목표 정리 2021년 목표 정리 2020..
환경정보 OS: macOS Big Sur 11.5.2 VirtualBox: 6.1.26 Ubuntu: 20.04.3 LTS Desktop VirtualBox에 Ubuntu 올리기 가상머신을 새로 만든 후 적절한 spec을 선택 후 다운로드 한 ubuntu 이미지를 설정한다. memory: 2GB, 디스크: 20GB, cpu: 2개 네트워크를 어댑터 브리지로 설정한 후 가상 머신을 실행시킨다. ubuntu를 설치했다면 필요한 tool들을 설치한다. sudo apt-get update sudo apt-get install net-tools sudo apt-get install vim 가상머신과 host 사이에 clipboard를 공유하기 위해 다음과 같은 설정을 해준다. VirtualBox에서 가상머신 설정..
컴파일 언어를 이용하는 개발자들은 코드를 작성하고 해당 코드를 컴퓨터에서 실행시키기 위해 빌드라는 작업을 한다. 빌드라는 작업은 소스 코드를 컴파일 할 뿐만아니라 dependency를 추가해주고 실행가능한 bundle(묶음 파일)을 생성한다. java에서는 jar파일 또는 war파일이 될 수 있다. 이러한 결과물을 우리는 Artifact(인공물)라고 부른다. 개발자가 필요한 라이브러리와 소스 코드의 classpath를 직접 명시해주고 Artifact를 생성할 수 있지만, 대개의 경우 Maven이나 Gradle 같은 빌드 툴을 이용하여 해당 작업을 자동화한다. Maven은 pom.xml에 Gradle은 build.gradle 파일에 빌드 작업을 각 빌드 툴에서 제공하는 명세 혹은 DSL로 작성한다. 그러면..