전체 글 79

간만의 면접

이번에 네카라쿠배? 중 하나의 회사 면접에 가게 되어 난생 처음으로 판교에 가보았다.이직 준비를 하면서 서류합격률이 많이 낮았기 때문에 간만에 면접경험을 얻을 수 있는 좋은 기회가 생겨 좋았다. 면접의 내용은 어차피 글로 쓸 수 없지만 면접중 ai를 허용하는 라이브 코딩테스트를 치는게 신기하다는 생각이 들었다. 면접이 끝나고 질의를 주고 받는 시간에 면접관님에게 테스트 코드 작성 시 단위/통합 테스트의 비중에 대해서 여쭤보았다.면접 전에 쿠팡 출신 개발자 분에게 멘토링을 가지는 시간을 가졌어서 그 때도 유사한 질문을 드렸었는데 이런 질문을 드린 이유는 최근에 여러 프로젝트를 동시에 진행해야 하는 상황이 지속 되면서 테스트 코드 작성의 필요성을 더욱 절실히 느끼고 있는데 (테스트 코드가 없으면 기획 / ..

카테고리 없음 2025.09.10

postgres shared_buffers

요약 PostgreSQL은 shared buffer (shared memory 영역)가 비워지지 않도록 스케줄러를 사용했습니다.근데 밑에 글은 그 내용보다는 인덱스 튜닝에 더 가까운 것 같음상황고객사에서 이용할 api 응답속도가 37초정도의 응답속도를 보이고 있어서 인덱스 튜닝을 통해서 해당 문제를 해결하려 하였습니다.SELECT cc.id, cc.channel_name, ccd.follower_cnt, ccd.contents_cnt, ccd.created_at, ccd.date AS latest_scrap_date, f.saved_urlFROM channel_creator cc JOIN LATERAL ( SELECT * FROM channel_creator_daily d ..

카테고리 없음 2025.08.27

레거시 프로젝트 - feature flag

📌 문제 상황최근 사내에서 유지보수 중인 외부 프로젝트에 새로운 기능을 추가해야 할 일이 있었습니다.기능 자체는 복잡하지 않았지만, 빠른 배포와 안정적인 롤백이 중요한 상황이었습니다.🚧 병목 지점:배포 과정에서 승인 절차가 필요함롤백 시 시간과 리소스가 많이 소요이로 인해 작은 기능 하나를 배포하는 것조차 부담이 될 수 있었습니다.📌 선택: Feature Flag 도입두 가지 포인트를 고려하여 Feature Flag 방식을 선택했습니다: 1️⃣ 신규 기능 추가 빈도해당 프로젝트는 자주 기능이 추가되지 않기 때문에 기술 부채가 크게 남지 않을 것이라고 판단.2️⃣ 관리 권한 위임어드민 화면에 Feature Flag 관리 기능을 추가하여 기능 활성화/비활성화 권한을 관리자에게 위임. 📌 Feature..

카테고리 없음 2025.01.02

동적 빈주입

현재 개발중인 프로젝트는 셀렉터를 통해서 분기를 수정하면서 타겟의 특정 점수들을 확인할 수 있습니다. 신규 요구사항으로, 기존에 raw데이터 기반으로 직접 계산하던 설문조사 데이터 응답을외부 api 연동 기반으로 수정 해야하는 상황이 있었습니다. 2024년 2분기까지는 기존의 로직을 기반으로 계산 2024년 3분기부터는 새로운 로직을 기반으로 계산   방법@RestController@RequiredArgsConstructor@RequestMapping("/v1/surveys")@Slf4jpublic class SurveyController { private final List surveyDataReader; 스프링에서 빈을 주입 받을 때, 위와 같이 리스트 형태의 빈을 주입받을 수 있습니다. 인터페..

스프링 2024.10.25

어노테이션 프로세서 만들기 (feat. 오픈 소스..)

개요https://github.com/jaehyeong2/command-query-generator GitHub - jaehyeong2/command-query-generatorContribute to jaehyeong2/command-query-generator development by creating an account on GitHub.github.com 학습용 or 심심해서 개인 프로젝트를 만들 때 아래 코드처럼,항상 Class 안에 data class를 nested구조로 만드는 형태로 dto를 생성하여 사용하고 있습니다. 거의 boilerPlate느낌으로 항상 이용하는 느낌이 드는 것 같아, 생산성을 조금 높여보고자 해당 dto를 공통으로 만들어주는 코드를 작성해오픈소스로 등록해보자는 생각이 ..

java 2024.10.13

sql 파일로 given 준비하기

복잡한 객체 관계에서 given 준비의 복잡성테스트 코드를 작성하다가 보면 설정되어 있는 여러 객체간의 관계 때문에, 테스트 하려는 관심사에 대한 내용보다 사전 준비작업에 시간을 할애하는 경우가 있습니다. 아래 코드는 간단한 예시로, OrgnizationManager의 role이 변경 되는 테스트를 작성해야하는데 이를 위해서 Organization 데이터를 셋해줘야하는 상황을 보여줍니다. @Test fun `modifyToAdmin 호출 시 어드민으로 수정된다`() { //given val organization = Organization( id = 33L, name = "TestCorp", engName = "TestCor..

테스트 2024.10.01