회고

가까울수록 어려운 대화, 나는 어떻게 말해야 할까

"대화"는 위키에 따르면 마주 대하여 이야기를 주고받는 것을 뜻한다. 우리는 살면서 다양한 갈등 상황과 마주하게 된다. 그러나 정작 대화를 나누는 과정에서는 대화의 정의처럼 서로의 마음이나 욕구를 진심으로 들여다보며 이야기하지 못하는 경우가 많다. 특히 가장 빈번하게 겪는 갈등은 대화 방식에서 비롯된다.상대방의 의견은 듣지 않고 자기 의견만 고집하는 형태상대방이 싫어할까 두려워 자신의 의견을 표현하지 않는 형태대화 자체가 두려워 아예 피하는 형태나 또한 지금까지 예시로 든 모든 갈등 상황을 경험했다. 나 자신일 수도 있고, 타인일 수도 있다. 작은 오해에서 비롯된 다툼들로 인해 인간관계에서 아쉬움을 느끼면서 우리는 대화를 더 잘하는 법을 발전시키게 된다. 그리고 나 역시 앞으로 다양한 상황과 경험을 겪으..

Backend

Rate Limiter 시리즈 - 이론편

배경최근 사내 OpenAPI에 Rate Limiter를 적용하면서, 분산 환경에서 가장 구현이 간편한 Fixed Window Rate Limiter를 설계하고 도입하였습니다. Rate Limiter에는 여러 방식이 존재하는데, 이번 기회를 통해 각 방식의 개념과 특징을 정리하고자 합니다.Rate Limiter AlgorithmToken BucketToken Bucket은 일정 개수의 토큰을 저장하는 버킷(Bucket)을 이용하여 요청을 제어하는 알고리즘입니다. API 요청을 처리하려면 버킷에 남아 있는 토큰이 필요하며, 토큰이 모두 소진되면 추가 요청은 제한됩니다.동작 방식토큰 생성 방식토큰은 1 / 제한 요청량을 단위로 생성됩니다. 예를 들어서, 1분당 10개를 제한한다고 하면 6초에 1개씩 생성합니다..

회고

프로란 무엇일까.

회사 문제를 해결하기 위해 머릿속으로 어떻게 해결해야 할지 계속 생각을 하던 2025년 2월 16일 오전, 눈 내리는 겨울 아침이었다. 생각을 머리 속에 담아두며 길어진 머리를 정리하기 위해 예약 시간에 정확하게 도착하거나 조금 늦을 수도 있는 그런 시간 여유롭게 나왔으면 어땠을까 하며  미용실로 발걸음을 옮겼다. 다행스럽게도 제 시간에 도착하여 미용실 문을 열고 들어서자, 처음 뵙는 인턴분이 긍정적인 목소리와함께 안내를 도와주셨다. 머리를 정리하기 이전, 인턴 분은 머리를 감겨주기 시작했다. 고객이 불편함을 느끼지 않을 수 있도록 거친 움직임 없이 옷에 물이 스며들지 않도록 세심한 손길 하나 하나에서 부드러움을 느낄 수 있었다. 원래도 배려심이 많은 분이었을까, 아니면 아직 인턴 생활을 한지 얼마 되지..

Spring

"의존성 하나 추가했을 뿐인데" – FeignClient @SpringQueryMap 장애 분석기

배경사내 OpenAPI에 RateLimiter를 추가하면서 테스트를 강화하고 회귀 오류를 방지하기 위해 철저한 검증을 진행했습니다. 그럼에도 불구하고 예상치 못한 장애가 발생했습니다.회귀 오류를 방지하기 위해서 테스트 코드를 강화했음에도 불구하고 테스트에서 장애가 검출되지 않는 이유는 무엇이었을까요?결론부터 말씀을 드리자면, 사내에서는 OpenAPI 요청 서버와 인증 서버를 분리하여 운영하고 있는데, 테스트 환경에서 네트워크 I/O 발생 부분을 Mocking 처리한 것이 원인이었습니다. 그리고, 실제 디버깅을 하면서 문제를 추적하는 과정에서 FeignClient의 @SpringQueryMap을 사용한 특정 요청이 실패한다는 사실을 발견했습니다.개발 환경Java Version : 14Spring Boot ..

회고

1차 러닝 목표, 10km 달리기까지의 여정

러닝을 시작하게 된 계기개발자라는 직업을 택하고, 개발자가 된 지금도 개발자가 되기 이전에도 귀가 닳도록 들었던 조언이 있다."개발자로서 롱런하려면 운동을 꾸준히 해야 합니다. 나중에는 몸이 아파서 정말 못 할 수도 있어요."평소에도 종종 공부를 하거나, 업무를 하는 경우에 적은 통증이 있었던 나는 운동의 필요성을 느끼게 되었고, 사무직은 신체 활동이 적어 따로 시간을 내어 체력을 관리해야 한다는 점도 공감이 갔다. 그래서 처음엔 PT와 필라테스를 등록하여 배우며 운동을 시작했다. 혼자서 해볼 수도 있었지만, 유연성과 자세의 문제인지 운동 이후에 적지 않게 통증이 찾아오는 과정이 수반되었다. 근육이 성장하는 통증이 아닌 잘못 된 부분에 오는 통증 말이다. 하지만 심폐 지구력을 기르는 운동은 여전히 쉽지 ..

Spring

새어나가는 Data Transfer 비용을 잡자!

서론데이터 통신 비용 절감의 필요성안녕하세요. 최근에 환율이 올라가게 되면서 자연스럽게 서버의 지출 비용이 늘어나게 되었습니다. 아래 사진은 최근 6개월간의 환율 변동입니다.회사에서는 불필요한 비용 지출이 없는지 점검하는 시간을 가졌습니다. 이 과정에서 데이터 전송 비용에서 이상치 데이터가 발견되었고, 해당 원인을 분석하고 개선하는 업무를 맡게 되었습니다. 이번 글에서는 그 과정과 해결 방안을 공유하고자 합니다.비용이 발생하는 주요 원인클라우드 비용을 추적하기 위해 메가존에서 제공하는 Hyperbilling 서비스를 사용하고 있습니다. 해당 서비스에서 특정 리소스의 Out 대비 비용이 유독 높게 발생하고 있음을 확인했습니다.특히 비용이 발생하는 카테고리는 APN2-DataTransfer-Out-Bytes..

QueryDSL

Querydsl PostgreSQL OverLap, Contains 연산자 이슈 해결기

안녕하세요. 이번 글쓰기에서는 트렌비의 카탈로그 조회 성능 최적화 이슈를 해결과정을 공유하는 글을 작성하고자 합니다.배경트렌비의 카탈로그 도메인의 프로젝트는 다음과 같은 기술 스택을 기반으로 개발되었습니다.Kotlin + Spring Boot 2.7.6QueryDSL 5.0.0Hibernate 5.6.14PostgreSQL 14.3문제상황트렌비에서는 2024년 2분기에 상품에 대한 카탈로그를 더 많이 생성하고, 많이 묶어 바로 시세를 제공하여 고객들에게 정확한 가격 비교와 바로 시세 데이터를 제공하고자 하는 목적이 있었습니다. 그 과정에서 카탈로그의 수가 증가하게 되었고 어느 순간 카탈로그 어드민 페이지가 전반적으로 성능이 떨어지는 모습을 볼 수 있었고 운영 쪽에서도 많은 인입이 들어왔습니다.성능이 병목..

회고

2024년 나의 회고 일지

어느덧 2024년이 저물어 간다. 이 짧은 시간 동안 나는 얼마나 성장했을까? 어떤 일들이 나를 스쳐 갔는지 돌아볼 필요가 있다고 느꼈다. 그래서 인프런 회고 밋업에 참가해 도움을 받기도 했다."산을 오를 때 경치 대신 앞만 보고 걷다 보면 정말 아름다운 순간들을 놓칠 수 있다. 나의 올해는 얼마나 아름다웠을까? 혹은 나는 앞만 보고 달리지는 않았을까?"이를 돌아보고자 회고를 작성하게 되었다.1월프로그래머스 데브코스의 졸업 직전과 졸업 이후, 지속적으로 이력서를 수정하며 바쁜 한 달을 보냈다.당시 노션을 활용해 이력서를 제출하는 방식이 유행했는데, 매니저님의 조언이 큰 도움이 되었다.“이력서는 문서다. 아름답고 화려함보다 중요한 건, 면접관이 평가하고자 하는 내용을 명확하게 담아내는 것이다. 문서 안에 ..

회고

kotlin-logging vs slf4j 뭘 사용해야 하지?

서론최근 사내 프로젝트를 마이그레이션을 진행하면서 프로젝트를 재 설계 할 수 있는 기회가 생겼습니다.아키텍처와 라이브러리를 선정하는 과정에서 발생한 logging 라이브러리의 버전 관리 문제점과 어떻게 해결을 하였는지를 공유하고자 합니다. 배경 지식회사에서의 신규 프로젝트를 준비하면서 언어 플랫폼은 kotlin, 프레임워크는 스프링으로 채택되었습니다. 그리고, 필요한 여러 외부 라이브러리에 대한 의존성을 주입하는 과정에서 로깅을 위한 두 개의 선택지가 존재했습니다.스프링 진영에서 사용하고 있는 facade 형태로서 로깅을 처리할 수 있는 slf4j를 사용할 것 인가kotlin 위에서 유리하게 동작하는 kotlin-logging을 사용할 것 인가.결론은, kotlin-logging을 사용하는 것으로 결정을..

Spring

막내 개발자의 사내 분산 락 라이브러리 도입이야기 (1)

트렌비에서는 대부분의 서버가 분산된 EKS 환경에서 운영되고 있습니다. 하지만, 새로운 프로젝트를 만들 때에 분산 환경을 위한 분산 락 설정을 매 번 추가해주어야 하는 번거로움과 레거시 시스템에서는 분산 환경을 충분히 고려하지 못한 경우가 있어 동시성 문제가 발생하는 경우가 종종 있었습니다. 이를 해결하기 위해, 사내 공통 분산 락 라이브러리를 개발하자는 아이디어를 팀장님에게 제안하였고 자유롭게 만들어 볼 수 있는 기회를 주어서 제작해보게 되었습니다. 분산 락Java와 Kotlin에서는 Monitor 인터페이스로 ReentrantLock, synchronized 키워드 등을 통해 락을 관리할 수 있습니다. 하지만 이러한 방식은 인메모리에서만 작동하여 분산 환경에서는 적용하기 어렵습니다. 예를 들어, 클라..

회고

개발을 위한 학습의 태도 (그런데.. 흑백 요리사를 곁들인)

최근 가장 핫한 TV 프로그램이라고 하면 단연코 '흑백 요리사' 를 꼽을 수 있다.많은 사람들이 재미있게 본 이 프로그램을 보면서 개인적으로는 다른 생각도 하게 되었다. "흑백 요리사에 참석한 모든 쉐프들은 다들 많은 노력을 하고 난 이후에 위 자리에 올라왔다. 여기서 배울 수 있는 점은 무엇일까?"그리고, "각각의 미션들을 보면서 어떤 노력, 얼마만큼의 생각을 평소에 했기에 저만한 결과를 낼 수 있었을까?" 라는 생각이 들었다.오늘은 개발과 흑백 요리사에 대한 내용을 살짝 곁들여서 이야기를 진행하고자 한다.음식에 100점은 없다고 생각합니다.안성재 쉐프는 요리사들의 요리를 평가하면서 "자신은 100점짜리 요리는 존재 할 수 없다" 고 말했다. "모든 음식은 더 나아질 수 있는 가능성이 있기 때문" 이..

회고

취업, 그리고 앞으로의 여정.

서문 2024년 1월 18일. 나에게 부족한 점, 그리고 나에게 주어진 피드백을 정리하며 마음을 다 잡았다. 노력의 결과였을까. 서류, 코딩 테스트, 1차 면접, 2차 면접을 통과하여 꼭 가고 싶었던 회사인 트렌비에 합격을 하게 되었다. 취업이라는 목표를 이루었고, 나는 이제 개발자라는 출발선에 다시 서게 되었다. 출발선에서 앞으로 내가 이뤄나가야 할 상반기 목표들을 정리해보고자 한다. 개발 아직 팀이 정해지지 않았고, 어떤 도메인을 도맡아서 개발을 할지에 대해서도 미지수이다. 하지만, 면접을 보면서 회사에서 현재 내 기술 스택과 비교하여 부족한 부분들이 무엇인지 들을 수 있었다. 상반기에는 회사의 문화에 적응하며 기술을 다룰 수 있도록 정진하여 사고치지 않고 1인분을 할 수 있게 됨에 집중해보도록 하자..

회고

나는 어디로 나아가고 있는가.

최근 4번의 최종 면접 탈락을 겪으면서 자존감이 많이 떨어져있다. 이렇게 죽어있는 상태로 나아가다간 나의 성장은 멈출 것 같다는 느낌이 들었다. 지금 이 글을 작성하고 있는 현재 나는 무엇을 하고 있는지 그리고 이를 토대로 무엇을 개선하면 좋을지에 대해 되돌아보자. 현재의 활동 현재 나의 패턴을 정리해보자. 오전 오전 7시에 일어난다. 데브코스 팀원들과 미라클모닝을 실천한지 어느덧 1달차가 되어간다. 미라클 모닝은 더욱 일찍 일어나야 하지만, 우선 7시에라도 일어나서 활동하자는게 취지이다. 벌써 1달이 거의 다 되어가지만, 아직도 일어나는 일은 쉽지가 않다. 몸을 뒤척이다 핸드폰으로 유튜브를 잠깐 볼까 하지만 머릿속으로 아침에 일어나자마자 보는 유튜브는 이후의 두뇌의 활동을 무너뜨린다는 얘기를 들은 적이..

회고

2023년 연간 회고

칼바람이 불던 2023년이 지나고 어느덧 2024년이 되었다. 달마다 연마다 나의 한해는 어땠는지 되돌아보는 회고 시간이 가장 중요하기 때문에 작성을 해나가며 회고를 진행해보고자 한다. 2022.12 ~ 2023.02 2022년도 10월부터 진행했던 캡스톤 프로젝트를 혼자서 가져가게 되면서 여러모로 부족한 부분이 많이 보였던 프로젝트였다. 당시에 js, http 자체를 이해하기 버거워해서 프론트를 다루는게 너무 어려워했었다. (지금와서 생각해보면 부딪혀가면서 했으면 어땠을까 싶기도 하다) 12월에 팀을 다시 새로 만들고 코드 자체도 리팩토링을 하면서 프로젝트를 다시 진행을 했었다. 당시에 테스트 코드를 작성하면서 테스트 코드를 작성하는 시간이 너무 많이 소요된다는 이유로 테스트 코드 작성을 소홀히 했었다..

개발 고민

N + 1 문제의 쿼리 개선의 주의사항

N + 1 문제를 해결하는 과정에서 발생하는 성능 차이 개요 프로젝트 도중 N + 1 문제를 해결하는 과정에서 예상하지 못한 성능 문제가 발생하였습니다. N + 1 문제를 해결하고 성능을 개선하면서 1 + 1 쿼리로 바꿨음에도 불구하고 성능이 떨어지는 이슈가 발생한 사례를 소개하도록 하겠습니다. N + 1 문제란 N + 1 문제를 해결하는 과정을 살펴보기 전에 N + 1 문제가 무엇인지 먼저 간단하게 알아보도록 하겠습니다. N + 1 문제는 연관관계가 설정된 엔티티 사이에서 한 엔티티를 조회하였을 때, 조회된 엔티티의 개수(N) 만큼 연관된 엔티티를 조회하기 위해 추가적인 쿼리가 발생하는 문제입니다. N + 1 문제의 해결 방법 N + 1 문제를 해결하기 위한 방법으로는 상황에 따라 FetchJoin, ..

Redis

Redis 테스트 이후 데이터가 남아있는 이슈

Redis Template 사용 시 주의사항 최근 Redis 학습 테스트를 진행하면서 발생했던 이슈를 하나 공유하고자 합니다. Redis의 자료구조 중 set 자료구조를 테스트하고자 하였습니다. 해당 테스트 코드는 다음과 같습니다. @DisplayName("restTemplate key-value(Set) 형식으로 저장한다.") @Test void saveSetForOps() { // given SetOperations stringObjectSetOperations = redisTemplate.opsForSet(); String KEY = "setKey"; LocalDateTime serverTime = LocalDateTime.now(); Fruits apple = Fruits.createFruit("..

Backend

EC2 재부팅 시 Docker, Nginx 자동 실행

들어가기전, EC2 서버 환경은 Amazon-Linux-2023 입니다. 프로그래머스 데브코스 기간 중 서버가 매일 오전 10시에 켜지고 새벽 2시에 꺼지도록 자동으로 설정이 되어있었습니다. 인프라를 담당하고 있던 제가 만약 누군가가 서버를 사용해야 한다면 새벽 2시까지 기다렸다가 서버를 켜주어야 하는 불편함이 있었습니다. 개발을 할 때부터 EC2 서버가 켜지면 필요한 Docker-Container 들이 실행되었으면 하는 생각이 있었습니다. 프로젝트 종료 이후 해당 방법을 해결하기 위한 방법을 찾아봤고, 비교적 간단한 방법으로 설정 할 수 있었습니다. 1. systemctl 을 등록 할 수 있도록 service 들이 모여있는 directory 로 이동 cd /etc/systemd/system 실제로 많은..

Redis

RedisTemplate LocalDateTime Serialize 문제

Spring Data Redis는 Key-Value 구조의 자료구조만 사용하기 때문에 다른 자료구조도 테스트 해보기 위하여 RedisTemplate를 직접 만들어서 학습 테스트를 진행해봤습니다. redisTemplate.opsForValue(); 를 사용하여 key-value 자료구조에 대해서 Primitive Type, Reference Type 두 경우에 대해서 테스트를 진행해보고자 하였습니다. @DisplayName("redisTemplate key-value 형식으로 기본형 타입 저장") @Test void saveValueOpsPrimitiveType() { // given ValueOperations stringObjectValueOperations = redisTemplate.opsForVa..

Redis

Spring Data Redis TTL 이슈

Redis TTL 이슈 레디스의 학습 테스트를 진행 하던 중 TTL 설정 시 발생하는 이슈를 확인 할 수 있었다. 다음과 같은 도메인이 있다. @Getter @NoArgsConstructor(access = AccessLevel.PROTECTED) @RedisHash(value = "fruits", timeToLive = 1) public class Fruits { @Id private String id; private String name; private Integer stock; @Indexed private LocalDateTime createdAt; @Builder private Fruits(String name, Integer stock, LocalDateTime createTime) { thi..

프로그래머스 데브코스

최종 프로젝트 회고(2) - 멀티 모듈

최종 프로젝트를 진행하면서 멀티 모듈 설계에서 겪었던 이슈들을 몇 가지 공유하고자 한다. 먼저, 초기에 계획 된 우리 팀의 멀티모듈 구조는 다음과 같이 설계되었다. 위 사진처럼 멀티모듈 구조를 레이어별로 가져가기로 했다. 레이어별로 구조를 가져가기 이전에 먼저 모듈을 어떻게 가져가는 것이 좋을지에 대해 팀원들과 얘기를 나누었다. 하지만, 프로젝트 기간이 짧은 만큼 도메인이 많이 발생 할 것으로 예상되지 않고 멀티 모듈을 구성했을 때 모듈 별로 부트 서버를 따로 띄울 일이 프로젝트 구조 상 발생하지 않을 것 같다는 전제에서 시작했다. 고민을 레이어별로 모듈을 나누는 것과 도메인 별로 모듈을 나누는 것 두 가지를 고려했기 때문에 자연스럽게 레이어 별로 모듈을 가져가기로 결정하였다. 참고로, 멀티모듈을 어떻게..

프로그래머스 데브코스

최종 프로젝트 회고 (1) - 일정 관리

프로그래머스 데브코스에 참여한지 이제 거의 6개월이 다 되어간다. 현재는 최종 프로젝트 기간 중 QA 기간이라 포스팅을 쓸 시간이 생긴 것 같아 하루에 겪었던 이슈들을 하나씩 정리해보려고 한다. 그 중에서는 일정 관리 부분이 가장 중요했던 것 같다고 생각하여 이를 얘기해보고자 한다. 서론 프로젝트를 진행하기 전에 프로그래머스에서 '일하는 우리'의 지윤정님의 강의를 통해 협업에 임하기 전에 배워야 할 태도와 애자일 방식의 프로젝트 관리를 방법을 간단하게 배우게 되었다. 저번 1차 클론 코딩 프로젝트에서는 제대로 진행이 되지 않았지만, 최종 프로젝트에서는 애자일한 협업을 한 번 해보고자 마음을 먹었다. 팀원분들이 대부분 내향적인 성격을 가지신 MBTI I로 구성이 되어있었다. 스크럼을 이끌어가는 것은 그래도..

프로그래머스 데브코스

지역 데이터를 스프링의 캐시 기반으로 조회하기 feat. 공공지역 데이터

서두 동작을 설명하기 이전에 지역 데이터를 스프링의 캐시 기반으로 조회를 하려고 했던 배경에 대해서 먼저 소개하겠습니다. 현재 진행 중인 프로젝트에서는 사용자들이 자신의 선호지역 혹은 자신이 검색하고자 하는 지역들을 선택 할 수 있습니다. 이를 클라이언트에서 불러오기 위한 방법을 2가지를 떠올렸습니다. 1. 먼저 시를 선택하면 시에 해당하는 id 값을 서버에 보내서 구를 가지고 오는 api를 호출한다. 2. 구가 도착하면 다시 구를 선택하고 구에 해당하는 id 값을 서버에서 보내서 동을 가지고 오는 api를 호출한다. 3. 마지막으로 동을 선택한다. 위와 같은 과정은 먼저 3번의 네트워크를 타야하고, 유저가 어떤 시, 구, 동을 선택할지 예상 할 수 없었습니다. 캐시를 사용한다고 하더라도 각 시에 호출,..

면접 회고

NHN) 2차 C(문화) 면접 회고

1차 면접 글을 올리고 난 후 많은 시간이 흘렀다. 포스팅을 준비해둔 주제는 정말 많았는데, 우선순위를 정하면서 포스팅을 뒤로 미루다보니 이제서야 적게 되었다. 하지만, 면접 당시 그 날의 기억은 뚜렷하고 내용을 잘 정리해두었기에 늦었지만 작성을 해본다. 면접 전 임원 면접은 첫 경험이었다. 따라서, 무엇을 준비해야 하는지 어떤 것을 준비해가야 할 지 면접에 대한 질문은 무엇이 나올지에 대해서 준비를 많이 했던 것 같다. 하지만, 여러가지 예상 질문들을 미리 준비를 했었는데, 임원 면접을 봤던 동료들에게 조언을 구하니 사실 그런 질문들은 미리 준비한다고 해서 예상 질문들로 보통 나오지 않는다. 그런 것 보다는, 다른 분야를 준비하다가 왜 이쪽 분야를 준비하게 되었는지에 대한 시나리오가 더 중요 할 것 같..

프로그래머스 데브코스

Code Deploy를 이용한 멀티 모듈 애플리케이션 배포 CD 구축하기

멀티 모듈을 적용한 계기 우리 팀이 진행한 캐치 테이블을 클론 코딩한 Dev-table 에서는 다음과 같은 기능을 구현하고자 하였다. 유저의 예약, 웨이팅 점주의 예약, 웨이팅 예약, 웨이팅을 알려줄 수 있는 알림 처음에는 이러한 기능들을 모두 하나의 모듈에서 처리하도록 구성을 해두었다. 즉, 다음과 같은 패키지 구조가 나타나게 된다. devtable ㄴ src ㄴ main ㄴ domain ㄴ reservation ㄴ application ㄴ OwnerReservationService ㄴ UserReservationService ㄴ presentation ㄴ OwnerReservationController ㄴ UserReservationController ㄴ waiting ㄴ application ㄴ O..

면접 회고

NHN) 1차 면접(T 면접) 회고

NHN의 T면접은 매번 채용시장에서 찾고자 하는 인재에 따라 인터뷰 방식이 달라지는 느낌이었다. T 면접을 보기 전에 도움이 될 만한 다른 포스팅 자료가 있는지를 알아봤는데 참고할 만한 자료가 많이 없었다. NHN T 면접에 대해서 어디까지 얘기를 할 수 있을까? 생각을 해봤을 때 어떤 문제가 나왔는지보다 어떤 방식으로 진행되는지만 간략하게 얘기를 하는 것이 좋을 것 같다. 기술 인터뷰 진행 전 인터뷰 방식에 써있는 것처럼 알고리즘 문제를 풀 수 있는 시간이 주어진다. 해당 시간동안 주어진 문제를 풀고 해당 문제를 바탕으로 기술 면접관들과 어떻게 풀어나갔는지, 더 좋은 해결 방안은 없을 지 서로 소통을 하면서 문제를 풀어나가는 방식이다. 준비를 해나가는 과정에서 알고리즘을 어느정도까지 알아야 하나요? 라..

회고

후배들에게 코드 리뷰를 진행했던 회고

왜 시작했는가 대학교를 다니면서 개발을 좋아하지만 막상 어떻게 개발해야 하는지 알지 못한 채. 그저 만들고 싶은것만 구글링 해가면서 만들어나갔다. 결과물을 만들어 낼 수는 있었지만 막상 얻게된건 구글링으로 검색하여 다른 사람의 코드를 덕지덕지 붙여서 완성하게 된 그런 결과물. 해당 결과물에 대해서 설명 할 수 있는가. 라고 하면 설명 할 수 없는 그런 결과물이었다. 졸업 이후 취업 준비를 하게 되면서 다른 사람은 코드를 어떻게 작성하는지 어떻게 짜는 코드가 좋은 코드인지 저 사람들에 비해 내가 부족한 것은 무엇인지. 메타인지를 하기 시작했다. 그렇게 차근차근 기본기를 쌓아가면서 6월부터 시작하게 된 프로그래머스 데브코스 백엔드 과정 부트캠프에서 코드 리뷰를 통해 내가 지금까지 무엇을 잘 못 알고 있었는지..

면접 회고

NHN - 1차 서류 및 코딩 테스트 회고

지원 이전 NHN은 Java 컨벤션에 대한 문서가 잘 정돈되어있는 만큼 평소에도 개발 문화가 좋은 곳이구나. 라고 생각을 하며 꼭 서류를 작성해보고 싶은 부분이었다. 이 때, 남들과 다르게 특별한 부분이 있었는데 지금까지 웹 백엔드 개발자를 준비해왔지만 직무를 게임 서버 개발자라는 직무에 지원하였다. 이 부분은 C 면접 파트에서 후술하도록 하겠다. 서류 매달 자신에 대해서 회고를 진행하면서 추가 할 내용이 있는지 이력서를 검토하면서 업데이트를 해나갔기에 추가 할 부분들만 추가하여 이력서를 제출하였고, 자기소개서 양식은 자유 양식이라 본인이 어떠한 가치관으로 개발을 하고 개발을 어떻게 진행해왔는지 실제로 나라는 사람은 어떠한 가치관으로 인생을 살아가고 있는지에 대해서 서술하였습니다. 코딩 테스트 문제는 총..

프로그래머스 데브코스

프로그래머스 데브코스 14주차 회고

서론 이번 주차에는 특별한 일들이 많았다. 하나씩 차근차근 있었던 일들을 정리해 볼 필요가 있었다. 프로젝트의 설계 먼저, 캐치테이블을 클론 코딩을 하기 위한 애플리케이션의 분석 및 erd 설계, 유저 스토리 정리가 마감이 되고 월요일 날 멘토님에게 컨펌을 받을 필요가 있었다. 캐치 테이블을 클론 코딩을 하기 위해 도메인을 분석하면서 나타나게 된 도메인은 7개 정도로 추려졌다. 하지만, 3주 동안의 클론 코딩을 진행하면서 7개의 모든 핵심 도메인을 구현한다는 것은 욕심이라고 생각이 들었고, 팀원들에게 다음과 같은 의견을 제시했다. "캐치 테이블이라는 애플리케이션은 본래 어떤 것을 목적으로 만들어졌을까요? 제가 생각하기에는 손님과 점주간의 관계에 있어서 예약과 웨이팅이라는 서비스를 편리하게 제공하고자 하는..

프로그래머스 데브코스

프로그래머스 데브코스 13주차 회고

이번 주 또한 쉬어가는 주여서 부족했던 부분을 보충 할 수 있는 주였다. 특히, 앞으로의 프로젝트 과정에서 모니터링이 중요하다고 생각하여 그라파나, 프로메테우스와 같은 모니터링에 대해서 공부를 했었다. 월요일날에는 타다 본부장님인 지두현님의 세션이 있었다. 세션에 대한 내용은 타다의 스프린트 방식에 대해서 알아볼 수 있는 내용이었는데, 말로만 들어오던 애자일 방식의 업무 진행이 어떻게 이루어지는지에 대해서 지두현 본부장님께서 잘 설명을 해주셔서 이해가 정말 잘 되었다. 그리고 지두현님께서 모든 세션에 대한 강의를 마치고 질문을 5개 정도 받는다고 말씀을 해주셨다. 나는 최근에 본 구현을 해야 할 용기에 대한 내용을 바탕으로 조금 예민할 수 있는 질문을 드렸다. 어떠한 유저들에게 굉장히 도움이 되는 아이디..

프로그래머스 데브코스

프로그래머스 데브코스 12주차 회고

이번 주는 쉬어가는 주차였다. 프로젝트를 어떻게 설계하는 것이 좋고 컨벤션은 어떻게 가져가는 것이 좋은지, 프로젝트를 진행하면서 어떤 툴 들을 주로 사용하고 실무에서는 어떤 형태로 진행을 하고 있는지에 대한 내용 폭포수 방식의 개발과 애자일 방식의 개발의 차이, 그리고 PO, 스크럼 마스터의 역할과 스크럼을 어떻게 진행하는 것이 좋은지 이러한 두 가지 방식에 대한 학습이 이루어졌다. 이전까지보다 편하게 들을 수 있었고 프로젝트 진행 간 어떻게 진행을 해야되는지 고민을 하다가 미루고 미뤄두었던 깊게는 알지 않더라도 UI 부분을 처리하기 위한 리액트 프레임워크에 대한 학습을 지금 해야 될 것 같다는 생각을 하였다. 프레임워크로써 정해진 것만 수행하면 편하게 할 수 있는 Vue와 React 중에 결국 Reac..

Bombo_
베짱이보다 개미처럼