특정 하드웨어 시스템을 제어하기 위해 Netty 기반 메시징 서버를 개발중입니다. 시험 중 특정 조건이 되면 타겟 시스템에서 일부 메시지를 처리하지 못하는 문제가 발생했는데요. 문제를 해결하기 위해 메시징 서버의 구조를 개선한 사례를 소개합니다.문제가 발생한 서버 시스
개발한 시스템에서 문제가 발생하면 우리가 가장 먼저 만나는 것은 문제의 표면적인 현상입니다. 우리는 문제를 해결해야 하는 엔지니어로서 문제의 현상 이면에 숨겨진 진짜 원인을 찾아야 합니다. 그래야 문제를 해결할 수 있습니다. 어느날 동료에게 전화 한 통을 받았습니다.
가비지 컬렉터의 동작 원리를 이해하고 이를 근거로 프로그램의 힙 메모리 증가 현상을 분석한 과정을 정리해 보았습니다.
개발을 시작한지 얼마되지 않았을 때는 프로그램에 버그가 생기면 관련된 부분에 로그를 찍거나, 디버그 모드를 통해 코드를 추적해서 원인을 찾아갔다. 그때는 귀납적 방법, 그게 전부인 줄 알았다.
아빠는 오늘 장난감 블록 조립을 잘하는 사람이랑 같이 고장난 장난감을 함께 봤어. 그 친구가 오늘은 직접 아빠를 찾아와서 같이 고장난 부분을 살펴봤단다. 아빠가 어제 병원의 의사 선생님처럼 아프면 일어날 수 있는 가장 나쁜 상황을 설명해줬더니 놀란 것 같아. 친구가 장
토비의 스프링 책을 읽다가 DI(Dependency Injection)에 대해 정리된 설명을 읽는다. A→B라는 의존관계를 갖는 오브젝트가 있을 때 A와 B 사이에 표준화된 인터페이스를 두면 A는 변경하지 않으면서 B의 구현을 B1, B2, B3로 자유롭게 확장할 수
윈도우 운영체제에서 DLL의 코드 영역은 운영체제 내 모든 프로세스가 공유하는 메모리 영역에 올라가서 시스템 전체에서 공유되어 사용된다. DLL 함수에서 선언된 지역변수는 각 프로세스의 쓰레드 스택에서 독립적으로 관리될 것이고, new 해서 생성되는 객체 역시 각 프로
새로운 장비의 IP 설정을 찾는게 장비 제어 모듈 개발의 시작이다. 메뉴얼을 보고 IP 설정을 해보는데 되지 않는다. 장비를 구매하고 운영하는 팀에 문의해 보니 IP를 바꾸었는데 까먹었다고 한다. 장비에는 화면도 없고 몇몇 예상되는 IP 대역을 스캔해 보아도 찾을 수가
신규 안테나의 제약사항 때문에 미션을 수행할 수 없는 구간이 생기는 문제가 있었다. 하드웨어 엔지니어로부터 미션이 안되는 구간을 감안하고 운영하겠다는 이해할 수 없는 대답을 듣고 마음이 어려웠던 기억이 난다. 그 날 회고를 하면서 나 스스로 문제를 해결하겠다는 마인드를
지난번에 해결했던 문제가 다시 발생했다. 개발한 시스템의 버그는 아니고 제조사에서 제공하는 하드웨어 세팅을 위한 프로그램 실행이 안되는 문제다. 근데 지난번에 해결했던 방법이 생각이 안난다. 오늘 그래서 2~3 시간을 날렸다. 별거 아닌 줄 알았는데.. 기록해 뒀어야