MASKUN's DOCUMENT

불필요한 기술을 쓰지 않는 기술

기능을 개발하다보면 미래를 생각하게 된다. 내가 적용한 기술이 향후 사용자가 늘고 트래픽이 증가했을 때 잘 견딜 수 있을지에 대한 염려가 들때가 많다. 보편적으로 아직 불필요한 기술을 적용하여 개발속도를 늦추고 유지보수가 어렵게 하는 것을 기술지향적인 개발이라고 일컫는다. 그리고 그 대척점에 있는 것을 고객지향적인 개발이라고 일컫는데, 이는 가능한...

제대로 다루지 못한 예외를 핸들링하기

부족한 점 깨닫기 스프링부트는 웹의 기본설정으로 잡히지 못한 예외가 발생하면 요청 헤더에 따라 HTML 또는 JSON 형식으로 예외에 대한 내용을 응답한다. 아마 이런 기본 설정은 API를 디버깅 할때 쉽게 서버측에서 발생한 예외에 대한 내용을 파악할 수 있어서 기본 설정으로 둔 것 같다. 내가 담당하는 API 서버의 코드도 예외가 발생하면 지금까지...

테스트없는 레거시프로젝트에 인수 테스트 도입하는 이야기

배경: 테스트 코드 부재로 인해 마주친 실무적인 문제 이 글을 쓰는 시점은 입사 후 약 7개월 정도 된 시점이다. 우리 팀은 신입 개발자 두명이 FE, BE를 담당하고 있다. 나는 BE를 담당하고 있다. 내가 솔루션의 담당자가 되었을 때, 물려받은 기존 코드에서는 테스트 코드가 작성되지 않았다. (아예 없던 것은 아니지만 테스트가 작성되고 있다고 말...

추상화 레벨을 고려한 리팩토링

상당히 길고 복잡한 기능을 수행하는 로직을 만들었다. 요구사항이 변경되면서 엔티티 설계가 함께 변경되었는데 이때 만든 코드가 스파게티처럼 얽혀 있어 수정이 어려웠다. 이때의 리팩토링 경험을 공유해본다. 접근제한자 public, private으로 추상화레벨을 구분하기 이팩티브자바, 클린코드 등에서 메소드의 추상화 레벨을 통일해야한다고 말한다. ...

다른 서버와 의학영상이미지 정보를 공유하기

배경 우리가 담당하는 A서비스는 A서버가 담당한다. A서비스에서는 특정 의학영상(이미지)를 업로드하고 수시로 조회할 수 있는 기능을 제공한다. 각 이미지는 메타정보에 따라서 작은 단위(Sequence)로 묶인 후 더 큰 단위(study)로 묶이게 된다. 이는 영상의학에 관련한 도메인 지식이므로 자세한 설명은 아래의 ChatGPT가 대신해준다. ...

변화무쌍한 매핑맵 만들기

회사에서 일을 하면서 다음과 같은 과제가 생겼다. 특정 json 데이터가 외부로부터 전달된다. 이 데이터를 요구되는 Map구조에 맞추어 가공해야했다. 하나의 객체 안에 담겨야 할 내용이 여러 객체로 분산되어 전달되는 경우 이를 하나로 병합해야했다. 반대로 분리되어야할 정보는 각각 분할해야했다. 키를 변경하거나 값을 변경해야할 경우도 있었다. 문제는...