목록development (75)
코딩하는 오징어
2024년도 언제 왔었냐는 듯이 지나갔다. 한 해를 마무리 할 때마다 조금씩 겁이 나는 것 같다. 다음 해에는 내가 더 잘 할 수 있을지, 커져가는 책임들을 내가 다 짊어 질 수 있을지.. 2024년은 AI 열풍의 시대였다. 엔비디아 주가가 연초대비 1000%가까이 올랐고, 많은 빅테크 기업들이 AI 연구 개발에 뛰어들었으며, 사람들은 AGI(Artificial General Intelligence), ASI(Artificial Super Intelligence) 용어들을 찾아보기 시작했다. gpt와 claude 제품들을 구독하는 사람들이 많아졌고, 구글링만 하던 시절이 저물어 간다는 말도 지인들과 농담 반, 진담 반으로 이야기했다. gpt가 많은 모범 답안을 제시해주고 있지만, 필자는 아직까지 100%..
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에서 가상머신 설정..