목록분류 전체보기 (34)
영주의 개발노트

글또 10기도 어느덧 이 글을 마지막으로 마무리하게 되었다. 글또를 모르는 분들이라면 아래에서 확인하길 바란다. 글또 - 글쓰는 또라이가 세상을 바꾼다글쓰는 개발자 모임, 글또입니다geultto.github.io9기부터 시작해서 10기까지 약 1년간의 글또 여정을 거치며 내 기준에서 많은 글을 작성했다. (원래 0에서 N까지 가는 것이 제일 어렵고 성장세가 커 보이는 법 ㅎ) 이 활동을 하면서 글감이 막 떠올라 작성할 생각에 설레었던 적도 있고, 마감에 쫓겨 후다닥 작성했던 기억도 있다. 주로 후자가 더 많았던 것 같긴 하다. 글또를 하면서 깨닫게 된 생각 2가지를 공유하고 앞으로의 계획 같은 것도 작성해보고자 한다. 1. 글 쓰는 건 생각보다 어렵지않다이전에는 개발 글을 작성한다 를 굉장히 잘 알고..

최근 프로젝트 진행 중 코루틴 컨텍스트에 대해 잘 알지 못하여 엄청난 삽질을 한 적이 있다. 어영부영 해결법은 알아내서 이슈는 잠재웠지만 제대로 이해하고 싶었다. 그렇기에 지금부터 코루틴을 뽀개보려한다. 여러 글에 걸쳐 차근차근 코루틴부터 코루틴 컨텍스트까지 공부할 것이다. 코루틴이 등장한 이유 💡기존에 우리는 비동기 프로그래밍을 위해 쓰레드와 콜백을 주로 사용했다. 하지만 이 방식들은 각각의 문제를 가지고 있다. 1) 쓰레드 방식의 문제비용이 크다: 쓰레드는 생성과 관리에 많은 리소스를 필요로 한다. 또한, 다량의 쓰레드를 실행하면 시스템 부하가 커진다.컨텍스트 스위칭 오버헤드: 여러 개의 쓰레드가 실행될 때, CPU가 쓰레드 간 전환을 수행하면서 성능이 저하될 수 있다.동기화 문제: 여러 쓰레드가..

최근 이미지 url을 일괄 변환하는 작업을 진행했었다. 이 과정에서 Serialize(직렬화)와 Deserialize(역직렬화)를 이용하여 URL을 변경하였다. 만약 당신이 직렬화와 역직렬화에 대해 잘 알고 있다면 해당 작업이 '뭔가 이상한데? 🤔'라고 생각할지도 모른다. 역시나 팀 내 코드 리뷰에서 "해당 방법은 직렬화/역직렬화의 원칙에서 벗어난다"는 피드백을 받았다. 리뷰를 받은 후 Serialize와 Deserialize의 원리를 다시 고민하게 되었고, 왜 내가 개발한 방법이 원칙에서 벗어난다고 했던것인지 정리해보고자 한다. Serialize와 Deserialize의 기본 원리serialize와 deserialize가 어떤 것인지에 대해 아주 간략하게만 짚고 넘어가겠다. 개념설명Serialize..

현재 일하고 있는 도메인 특성상 Elasticsearch를 사용할 일이 많다. 이번 기회에 Elasticsearch의 주요 데이터 타입들과 타입들의 특징을 정리해보고자 한다. 자세하고 깊게 파는 것은 아니고 대략적인 내용을 정리하고자 한다. 상품 ID 필드 추가 작업 중 해당 type을 text로 지정하였고, 필터 적용을 하려면 type이 long이나 keyword 여야 한다는 리뷰를 받은 적이 있다. 정확히는 exact match 되는 document를 찾기 위해서는 keyword나 long 타입으로 인덱싱 해야 한다는 내용이었는데, 당시에는 개발하느라 수정만 하고 제대로 이해하지 못하고 넘어갔었다. 이와 같은 상황이 발생하지 않도록 ES 데이터 타입에 대해 정리해보고자 한다. 우리는 왜 데이터 타입에..

최근 코드 리뷰에서 ‘OOO인 게 좀 더 코틀린스러운 코드입니다.’라는 피드백을 받은 적이 있다. 코틀린에 대해 공부해 본 적이 없는 난 이 리뷰를 받고 아래와 같은 생각이 들었다.코틀린스럽다는 게 뭐지? 🤔코틀린이 지향하는 바를 알아야 '코틀린스럽다'는 의미를 명확하게 파악할 수 있을 것이라고 생각했다. 그러기에 이에 대해 공부해보기로 했다. 코틀린스럽다?코틀린은 기존 자바보다 더 간결하고 안전하며 직관적인 코드 작성을 목표로 설계된 언어이다. 그렇기에 '코틀린스럽다'라는 개념은 코틀린의 지향점과 주요 기능을 적극 활용하여 코드의 가독성과 효율성을 극대화하는 것을 의미한다. 코틀린스러운 코드로 나아가기 위해 코틀린의 핵심 원칙을 자바 언어와의 차이와 함께 정리해보고자 한다. 원칙 (1): 간결함과 ..

gRPC와 Protocol Buffers에 대해 알아보자 (1)현회사는 gRPC를 통해 내부 마이크로 서비스 간의 통신을 하고 있다. gRPC라는 것을 처음 들어본 나에게는 굉장히 생소한 개념이라 나와 같이 처음 접하는 사람들에게 도움이 되었으면 하는 바람0juuu.tistory.com지난번에 gRPC에 대해 알아보았다. gRPC는 원격 프로시저 호출 프레임워크로, 서로 다른 서비스들이 통신하기 편리하도록 만들어주는 도구이다. gRPC는 서비스 간 데이터를 전송할 때 Protocol Buffers(이하, ProtoBuf)라는 데이터 포맷을 사용한다. 오늘 다뤄볼 내용은 데이터 포맷인 Protol Buffers이다. ProtoBuf 란 무엇인가구글이 만든 데이터 직렬화 포맷으로, 데이터를 효율적이고 빠르게..

2025를 맞이하는 이 시점에 벌써 작년이 된 2024년 회고를 하겠다. ‘개발 혹은 일 관련 내용만 적을까?’ 라고 고민하다가 이 회고말고 달리 회고를 진행할 것 같지 않기에 그냥 모든 걸 적어보려한다.어렸을 적에는 “올해도 너무 빨리 지나갔어~” 라는 어른들의 말이 이해가 되지 않았다. 어릴 땐, 모든 것이 새롭고 감정이 요동치기 때문에 상황에 대해 느끼는 감정이 제각기 다르기에 한 해 중 저장할 포인트가 많아 한 해가 길게 느껴진다는 이야기를 들었던 기억이 있다. 어른이 되어가며 상황들에 놓였을 때 감정을 유지할 수 있고, 많이 겪어봤던 일들이기에 한 해를 돌아보면 기억에 남는 것들이 많이 있지 않아 시간이 빠르게 가는 것처럼 느껴진다고 한다. 어떤 것이 더 좋은 방향이라고 말할 수는 없을 것 같다..

현회사는 gRPC를 통해 내부 마이크로 서비스 간의 통신을 하고 있다. gRPC라는 것을 처음 들어본 나에게는 굉장히 생소한 개념이라 나와 같이 처음 접하는 사람들에게 도움이 되었으면 하는 바람에 이 글을 작성하고자 한다. 이 글에서는 gRPC에 대해 자세히 알아보고, 이후 Protocol Buffer에 대해 알아볼 것이다. gRPC란 무엇인가? 를 알기 전에 🚥🖐️구글에서 개발한 오픈소스 RPC이다. 여기서 잠깐, RPC란 무엇인지 짚고 넘어가자. 많이들 알 수 있지만 RPC가 무엇을 하는지 알아야 gRPC에 대해서도 이해하기 수월할 것이다. 나처럼 RPC를 모르는 사람에게 아래 내용을 바친다. RPC란?RPC는 Remote Procedure Call로 원격 프로시저 호출을 말한다. 네트워크를 통..

🏦 기술 부채 상환 | git merge 와 rebase에 대해 알아보자최근 두고두고 쌓아둔 업보가 거대한 눈덩이로 변해 나를 덮쳤었다. 이 경험을 소개하며 그동안 쌓여온 git에 대한 기술 부채를 조금 갚아보려 한다. mac 세팅 중 사내 문서를 참고하여 아래 명령0juuu.tistory.com지난번에 merge와 rebase 개념에 대해 알아보았다. 이번에는 두 방식의 차이와 내가 겪었던 문제에 대한 원인과 어떻게 해결할 수 있을지에 대해 이야기해보겠다.Mergemerge는 두 개의 브랜치와 합칠 두 브랜치의 공통 조상 브랜치를 기준으로 합치게 된다. 이 과정에서 새로운 병합 커밋이 생성되며, 두 브랜치의 히스토리는 그대로 유지된다.특징 : 브랜치의 전체적인 히스토리가 보존되고, 합쳐지는 이력이 커..

최근 두고두고 쌓아둔 업보가 거대한 눈덩이로 변해 나를 덮쳤었다. 이 경험을 소개하며 그동안 쌓여온 git에 대한 기술 부채를 조금 갚아보려 한다. mac 세팅 중 사내 문서를 참고하여 아래 명령어로 git 세팅을 한 적이 있다. git config --global pull.rebase true한 달이 지난 후 develop 브랜치에서 개발 브랜치를 생성한 후 작업 내용을 반영하고 리뷰를 받았다. 리뷰를 반영하던 중 현 develop 브랜치에는 새로 개발되어 반영되어 있으나 내 개발 브랜치에는 해당 내용이 없어 develop 브랜치의 최신화된 내용을 내 브랜치에 반영해야 하는 상황이었다. 기존에는 pull.rebase를 false로 기본 설정해놓았기에 여느 때와 다름없이 아래 명령어를 실행하였다. 이렇게..