문제회사에서 병원에 판매하는 제품 중 전광판이라는 안드로이드 애플리케이션이 있다. 이 애플리케이션은 두 가지 역할을 하는데접수, 진료실, 상담실 등 순서대로 입장해야 하는 곳에 입장할 환자 표출병동 병실 별 입원 환자 목록 표출역할을 한다. 환자를 표출하는 로직은 의료진 선생님들께서 사용하시는 PC에서 병원 프로그램을 통해 환자 정보를 변경하면 앱으로 소켓 통신을 하게 되고 앱에선 받은 데이터를 화면에 보이게 된다. 이때 병원에 설치된 수많은 전광판마다 다르게 보여야 하는 정보가 있다. 대표적으로는 해당 전광판이 설치된 위치이다. 전광판을 설치할 땐 셋톱박스에 앱을 설치한 완제품 형태로 제공되고 셋톱박스는 고장 등의 이유로 수거가 되기도, 다른 위치에 재설치가 되기도 한다. 셋톱박스와 설치된 위치가 1:..
회사에서 운영하는 서비스 중 고객사(병원)에서 매일 회진을 시작하기 전 의사가 회진 일정을 선택 후 환자에게 알림 메시지를 전송하는 서비스가 있다. 고객사에서는 이 서비스를 의사들이 해당 서비스를 잘 사용하고 있는지 확인하기 위해 통계를 보여주는 서비스도 만들어 달라고 요청했었는데, 이번에 기능 추가 요구사항이 생겨 내가 업무를 담당하게 되었다. 단순히 통계 자료의 컬럼 몇 개를 추가해달라는 요구사항이라 쉬울 거라 예상했지만, 실제로 작업을 시작하면서 놀란 부분이 있다. 조회 조건에 따라 다르지만 가장 많이 조회하는 한 달 통계를 조회하면 API 응답 시간이 4.75초나 걸리고 있었다. 실제로 통계 자료를 자주 조회하는 것도 아니고 불편하다는 CS 도 없었지만 흔치 않은 성능 개선 기회라 놓칠 수 없었다..
24년 9월 9일 월요일에 있던 인프런 스프링 부트 밋업을 다녀왔다. 인프런에서는 주기적으로 밋업을 진행 하는데 이번에는 무려 조쉬 롱의 강연이 주제였다.조쉬 롱은 자바 챔피언이라고 많이 알려져 있고 개인적으로는 유튜브에서 Bootiful SpringBoot 라는 이름으로 속성 스프링 프로젝트 만드는 영상으로 접했었다. 세계적으로 유명한 개발자이다 보니 현장에서 만나는것 만으로도 도움이 될 것 같았지만 영어를 못하는 나에게는 현장 강의는 너무 큰 허들이었다.그런데 이게 웬걸! 이번 밋업은 플리토를 이용해 실시간 번역을 지원해주었다.덕분에 현장에서 듣는데 큰 문제가 없었다. 강연 내용이번 강연의 주제는 Spring Boot 3.x와 Java 21이 출시 되면서 눈여겨 보면 좋을 기술들을 라이브 코딩으로 소..
최근 넥스트 스텝의 만들면서 배우는 Spring을 수강하고 있다.확실히 혼자 만들 때 보다 더 많은 것을 배운다고 느낀 게, 시작부터 톰캣을 냅다 구현해 버린다. 정확하겐 강의 자료로 구현해 주신 WAS를 이용해 클라이언트와 서블릿처럼 웹 요청/응답을 주고받는 기능을 구현한다. 요구사항으로 URL 별로 비지니스 로직이 담긴 서블릿을 호출하기도, 정적 리소스를 반환하기도 해야 했다. 해당 미션을 진행할 때 궁금한 점은 '기존 톰캣은 이용자가 구현한 서블릿과 정적 리소스 반환 중 어떤 것이 먼저 일어날까?'였다. 톰캣의 정적 리소스 반환톰캣의 우선순위를 파악하기 위해 간단한 실험을 진행했다.루트 경로의 서블릿을 등록 후, 존재하는 정적 리소스를 요청하면 어떻게 될까?루트 경로 서블릿이 존재할 때 정적 리소..
너드한 개발자라면 흔히 드는 생각이 있다. 이건 어떻게 이렇게 되는거지?이런 궁금증을 한번에 해결해줄 수 있는 책이 있다.이 책에선 프로그래밍 언어와 실행, 운영체제, 프로세스, 스레드, 메모리 등 우리가 컴퓨터를 사용할 때 컴퓨터에서 일어나는 일에 대해 전반적으로 설명해준다. 내용들이 생각보다 깊이 있고 자칫 어려울수 있는 내용들 이지만 중간중간 이미지와 함께 설명이 되어 있어 이해하는데 크게 어렵진 않았다. 프로그래밍 언어컴퓨터가 이해할 수 있는 0과 1에서 어셈블리어, 고수준 언어까지 프로그래밍 언어가 어떻게 발전해왔고 이런 언어를 이용해 만든 프로그램이 실행되기 위해서 어떤 과정을 거치는지 잘 설명이 되어 있다.특히 앞쪽 내용을 바탕으로 뒤의 운영체제, 메모리 등 연관된 내용들이 가지치기 처럼 추..
실무를 하면서 많은 문제를 만난다.흔한 문제들의 경우 간단한 검색으로 해결할 수 있지만 상황에 따라 직접 어떤 문제가 발생했는지를 찾아갈 필요가 있는 경우도 있다.이런 능력은 개발자에겐 필수이지만 개발을 막 시작한 주니어나 이런 방법을 배우지 못한 환경이라면 문제를 해결하는데 쉽지 않을 수 있다. 이 책은 다양한 문제를 어떻게 효율적으로 해결하는지 자세히 제시해준다. 목차이 책의 목차는 다음과 같다.트러블슈팅 기본 테크닉트러블슈팅 고급 테크닉대규모 시스템의 트러블슈팅부록트러블슈팅 기본 테크닉개발할 때 사용하는 IDE의 디버거 기능과 로그를 설명해준다.디버거는 꼭 복잡한 실무가 아니더라도 개발을 할 땐 거의 필수적으로 사용해야 하기 때문에 배워둬서 안좋은게 전혀 없다.특히 이 책에선 간단한 사용법으로 끝나..
평소 학습할 때 애용하는 플랫폼 중 하나인 패스트 캠퍼스에서 진행한 일할맛 세미나에 참석하였다. 언제나 그렇지만 내성적인 E(?) 로써 이런 오프라인 행사는 또 다른 도전 같은 느낌이다. 그래도 늘 마무리는 기회가 된다면 꾸준히 참석해야겠다는 생각! 개발자 일맛 나는 프로젝트 라는 타이틀인 만큼 세션들도 개발자로서 일 하기 좋은 환경과 관련된 주제로 발표가 진행됐다. 강대명 님은 개발자 원칙 도서와 2023 안드로이드 올해의 앱인 퍼핀을 운영하는 레몬트리 CTO 님으로, 김은호 님은 유쾌한 스프링 방 이라는 오픈카톡방과 패스트 캠퍼스 10개 스프링 프로젝트 강의를 통해 알게 되어 꾸준히 팔로우하고 있는 개발자 분들이었다. 좋은 개발자가 되는 법 - 강대명 님 강대명 님은 좋은 개발자란? 의 질문에 함께 ..
Interrupt 나는 21년도 6월에 LX 공간정보아카데미 에서 진행하는 공간정보응용소프트웨어 전문가 양성과정 을 통해 개발자가 되었다. 당시에는 취업연계로 취업을 하기도 했고 또 아카데미에서는 잘하는 편이었기에 크게 공부에 신경쓰지 못했었다. 그러다 개발바닥 이라는 유튜브 채널을 알게됐고, 여러 영상들을 보면서 '진짜 개발자는 저런 직업이구나', '개발자가 되기 위해선 저런 공부가 필요하구나' 라는걸 생각하게 되었다. 그동안은 개발이라는것은 구글링하고 복붙하고 가 전부인줄 알았고 아카데미에서도 취업을 하고 나서도 내가 본 다른 개발자들은 전부 그런 일을 하고있었으니 그렇게 생각할 수 밖에 없었다. 어쨌든 본론으로 돌아와서 개발에 대해 시야가 바뀐 후로 나와 비슷한 연차의 개발자들 또는 개발자 취업을 ..
이용자가 로그인하면 응답받은 회원 정보로 계좌목록 조회해 주시고 각 계좌별 은행 서버에 잔액 조회해 주시고 대표계좌는 최근 일주일 거래내역 조회해 주시고 각 거래내역 별 ..... 위 상황은 물론 과장한 가상의 케이스이지만 API 요청에 대한 응답을 받은 후 다른 API 요청을 보내는 일은 실제로 빈번하다. 꼭 API 요청이 아니더라도 비동기적으로 처리하는 로직에 대해 종료시점 또는 응답값 반환시점에 필요한 행위를 하기 위해 Callback 을 많이 사용한다. Callback 위와 같은 상황을 해결하기 위해선(네트워크 요청이 비동기적이라는 가정 하에) 아래처럼 응답을 받은 후 호출할 함수를 인자로 넘겨주어 순차적으로 호출되도록 만든다. fun main() { foo() { boo(it) { // ... ..