F-Lab
🚀
상위 1% 개발자에게 1:1로 멘토링 받아 성장하세요
🚀
상위 1% 개발자에게 1:1로 멘토링 받아 성장하세요

멘토 Pick! 25년 3월 둘째 주 아티클 모음

writer_thumbnail

F-Lab : 상위 1% 개발자들의 멘토링

안녕하세요 여러분!
이번 주도 카카오 출신 멘토님께서 이번 주에 직접 선정한 아티클을 공유드립니다!

 

멘토's Pick에서 트렌디한 인사이트를 놓치지 마세요! 🚀

 

🤔 들어가기 전에 알아두면 좋습니다!

  • 대부분 아티클은 영문으로 제공됩니다. 영문 글을 읽을 때 크롬 번역 플러그인을 쓰면 읽기가 불편하나, 크롬 플러그인 하나를 설치하면 한국어를 읽듯이 좀 더 쉽게 영어 아티클을 읽을 수 있습니다. Trancy Chrome 플러그인을 설치 후 더 쉽게 읽을 수 있습니다.
  • 아티클을 읽고 어떤 점을 더 고민해 보고, 생각해 보면 좋을지 제시해 주시는 멘토님의 Comment도 잘 활용해 보시면 좋습니다!

 


 

💡Your Code is Fast, But Your Database is Slow—Now What?

  • 코드는 빠르지만, DB에서 병목이 걸리는 경우 문제 진단과 솔루션까지의 과정을 기초적인 수준에서 이해할 수 있게 설명합니다.
  • 간단한 인덱스 추가부터 반정규화, 파티셔닝, 샤딩, 캐싱을 고려할 수 있는 기초 지식에 대해 이해할 수 있습니다.

>> 아티클 읽어보러 가기 >>
 

💌 멘토님의 Comment
“꽤 난이도가 있는 성능튜닝을 시작하기 위해서는 어디서 병목현상이 일어나는지 먼저 진단하고, 어떤 방식으로 풀어나갈지 처방을 할 수 있어야합니다. 서버의 CPU, MEMORY 사용량은 양호하지만 성능저하가 있을 경우 어디서부터 살펴보실건가요?”


💡Null Safety in Spring applications with JSpecify and NullAway

  • Java의 고질적인 약점인 Nullable/NullPointerException을 방지하기 위한 신규 애노테이션 규격인 JSpecify를 출시합니다.
  • 라이브러리별로 혼재되어 중복처리되던 @Nullable 어노테이션 등에 대한 통일 규격에 대해 소개합니다

>> 아티클 읽어보러 가기 >>
 

💌 멘토님의 Comment
"자바에서 가장 많이 등장하는 예외중 하나인 `NullPoionterExcetpion`은 꽤 까다로운 예외입니다. 

이를 방지하기 위해 모든 메서드와 변수에 null check로직을 추가하면 깔끔하지 않은 코드로 보이며, `Optional`또한 nullable하기 때문에 적절하지 않았습니다. 언어의 컴파일러 레벨에서 null safe를 보장하지 않기 때문에, Null에 대한 처리는 Java의 가장 큰 약점중 하나입니다.
 

이를 해결하기 위한 새로운 규격인 JSpecify를 출시하지만 사실 이 규격은 2017년도부터 논의되어온 오래된 주제입니다. 이것이 출시된다 해도 언어레벨에서의 Null-safe를 보장하지 않기 떄문에 여전히 약점은 존재하지만, 각자 따로 nullable / non-null을 표기하던 방식에서 통일된 규격으로 null에대한 마킹을 할 수 있다는 장점이 보입니다. 

다만, 실질적으로 얼마나 효과가 있을지는 지켜보아야 할 것으로 보입니다."


💡Bloom Filter: A Deep Dive

  • 개발자들이 많이 어려워하는 블룸필터에 대한 기초 개념에 대한 튜토리얼 입니다.
  • “어떤 요소가 집합에 속해 있는지 아닌지를 빠르게 검사할 수 있는 필터”로 공간 효율적인 확률적 데이터 구조를 뜻하는 블룸필터를 조금 더 쉽게 이해할 수 있습니다.

>> 아티클 읽어보러 가기 >>
 

💌 멘토님의 Comment
"‘없음’이라는 응답은 100% 확실하지만, "있음"이라는 응답은 일부 오류(오탐)가 포함될 수 있음 을 보장하는 블룸필터에 대해 알고 계신가요? 캐싱과 필터링, 추천시스템에서 주로 사용되는 블룸필터에 대해 많은 개발자들이 어려워합니다. 이 블룸필터는 적은 메모리와 빠른 속도로 "없음" 에 대한 검사를 수행할 수 있습니다.
 

예를 들어, 회원가입시 사용하고 싶은 닉네임의 중복체크를 할 때는 어떨까요? 단순히 DB에 eq연산으로 쿼리를 날리는 방법도 있겠지만, 블룸필터를 활용하면 훨씬 빠른 속도와 적은 메모리 사용량을 가지고 검증할 수 있습니다.
 

더 많은 연산이 필요한 필터링의 경우, 스팸메일인지 아닌지에 대한 검증도 가능합니다. "메일의 발송자가 스팸메일 리스트에 없음" 을 검증하기 위해서는 DB에서 IN 또는 NOT IN연산을 해야합니다. 시간이 꽤 걸리는 연산이기 때문에, 여러가지 알고리즘 또는 블룸필터등을 활용하여 성능을 개선할 수 있습니다.
 

이처럼 블룸필터를 모른다고 해도 기능 구현자체는 가능합니다. 하지만 이런 기법들에 대해 모른다면 훨씬 빠르고 성능 좋은 대안에 대해 고민해볼 수 있는 선택지가 적어집니다. 하나의 기능을 구현하더라도 가능한 방법만 찾는게 아닌, 더 좋은 방법을 찾기 위해 넓고 얕은 지식도 필요하므로 이번 기회에 어려워했던 블룸 필터를 좀 더 살펴보는건 어떠신가요?"

ⓒ F-Lab & Company

이 컨텐츠는 F-Lab의 고유 자산으로 상업적인 목적의 복사 및 배포를 금합니다.

조회수

멘토링 코스 선택하기

  • 코스 이미지
    Java Backend

    아키텍처 설계와 대용량 트래픽 처리 능력을 깊이 있게 기르는 백앤드 개발자 성장 과정

  • 코스 이미지
    Node.js Backend

    아키텍처 설계와 대용량 트래픽 처리 능력을 깊이 있게 기르는 백앤드 개발자 성장 과정

  • 코스 이미지
    Python Backend

    대규모 서비스를 지탱할 수 있는 대체 불가능한 백엔드, 데이터 엔지니어, ML엔지니어의 길을 탐구하는 성장 과정

  • 코스 이미지
    Frontend

    기술과 브라우저를 Deep-Dive 하며 성능과 아키텍처, UX에 능한 개발자로 성장하는 과정

  • 코스 이미지
    iOS

    언어와 프레임워크, 모바일 환경에 대한 탄탄한 이해도를 갖추는 iOS 개발자 성장 과정

  • 코스 이미지
    Android

    아키텍처 설계 능력과 성능 튜닝 능력을 향상시키는 안드로이드 Deep-Dive 과정

  • 코스 이미지
    Flutter

    네이티브와 의존성 관리까지 깊이 있는 크로스 플랫폼 개발자로 성장하는 과정

  • 코스 이미지
    React Native

    네이티브와 의존성 관리까지 깊이 있는 크로스 플랫폼 개발자로 성장하는 과정

  • 코스 이미지
    Devops

    대규모 서비스를 지탱할 수 있는 데브옵스 엔지니어로 성장하는 과정

  • 코스 이미지
    ML Engineering

    머신러닝과 엔지니어링 자체에 대한 탄탄한 이해도를 갖추는 머신러닝 엔지니어 성장 과정

  • 코스 이미지
    Data Engineering

    확장성 있는 데이터 처리 및 수급이 가능하도록 시스템을 설계 하고 운영할 수 있는 능력을 갖추는 데이터 엔지니어 성장 과정

  • 코스 이미지
    Game Server

    대규모 라이브 게임을 운영할 수 있는 처리 능력과 아키텍처 설계 능력을 갖추는 게임 서버 개발자 성장 과정

  • 코스 이미지
    Game Client

    대규모 라이브 게임 그래픽 처리 성능과 게임 자체 성능을 높힐 수 있는 능력을 갖추는 게임 클라이언트 개발자 성장 과정

F-Lab
소개채용멘토 지원
facebook
linkedIn
youtube
instagram
logo
(주)에프랩앤컴퍼니 | 사업자등록번호 : 534-85-01979 | 대표자명 : 박중수 | 전화번호 : 1600-8776 | 제휴 문의 : info@f-lab.kr | 주소 : 서울특별시 강남구 테헤란로63길 12, 438호 | copyright © F-Lab & Company 2025