글 목록
-
Study
커머스 프로젝트를 시작하며
커머스 실전 프로젝트를 시작하며전부터 기술 학습 목적의 프로젝트는 의미없다고 생각했습니다. 정확히는 영양가 없다고 생각했고, 그래서 기술 학습만이 목적이었던 팀 프로젝트를 이력서에서 빼 버린 시기도 있었습니다.지금도 그 생각은 크게 변하진 않았습니다. 거기에는 여러 가지 피상적인 이유((개발자는 문제에서 출발해야 한다, 문제 없는 기술 깊이는 아무 도움이 되지 못한다.. 등)도 있지만, 근본적으로는 '공부를 위한 공부는 아무 영양가도 없다'는 생각과 경험 때문인 것 같습니다. 그럼에도 기술 학습 목적의 프로젝트를 시작한 이유는, 이제는 이 기술 학습에 의미를 부여할 수 있기 때문입니다.현실 세계의 문제를 모델링하고, 풀고, 운영에서 마주치는 문제를 이해하고 해결하기 위해서는 현상에 대해 화이트박스 수준으..
-
Study
심층 인터뷰로 제품 개선하기
가족아카이브 프로젝트를 만들고 서빙하면서, 피드백을 받고 이를 수용하는 과정에서 몇 가지 배운 것들이 있습니다. 이 글에서는 이에 대한 내용만 조금 다뤄볼까 합니다. 가족 아카이브는 제 프로젝트 중 유일하게 실제 사용자가 있고, 사용자로부터 불편을 피드백 받아 수용 → 재배포의 과정을 거친 의미있는 프로젝트입니다. 저한테 없던 유저 피드백 - 반영 사이클의 경험을 가져다 준 유일한 프로젝트였고, 그래서 이 경험 자체가 매우 소중하게 느껴졌습니다. 그래서 첫 번째 유저 피드백을 받으면, '이 소중한 피드백들을 모두, 하나도 빠짐없이 반영해서 사용자가 절대로 만족하는 서비스로 만들자' 는 생각에 부풀었습니다. 그리고 개발 초기, 아래 이미지와 같이 날것의 인터페이스를 가진 가족아카이브를 선보였습니다. 누..
-
Study
일 잘하는 사람이 되기 위해 내가 기억할 것
직장 뿐만 아니라 공동의 목표를 공유하고 있는 조직에서나와 조직 모두에게 가장 효율적인 결과를 위해 내가 할 수 있는것(내가 부족하고 고쳐야 할 것)그것은"문제 공유하고 도움 요청하기"다시 말해,내가 막힌 부분에 대해, 더 잘하고 뾰족한 사람의 도움을 받기+내가 못한 이유에 대해 다른 사람들에게 책임 전가(?)하기 → 모두와 책임 나눠 갖기 이게 왜 어렵냐신입들이 조직에서 아주 흔히 겪는 문제로 이런 것이 있다고 한다일 할당받고 함 → 밀릴 것 같음(5일동안 5를 해야 하는데 1일 남았는데 2밖에 못함) → [(내가 맡은 것은 최대한 열심히 하는 모습 + 해내는 모습) 보여주고 싶다 + 조직원들의 신뢰를 깨뜨릴 수 없다, 난 해낼 수 있다 등]의 이유로 어떻게든 몸 혹사시켜서라도 해내려고 함 → 실패 (..
-
Study
쿠폰 발급 동시성 제어 프로젝트
선착순 쿠폰 발급 동시성 제어(로 알아보는 잠금 방식)선착순 쿠폰 발급 시스템을 만들면서, 동시 요청 환경의 경합 상태를 해결하는 작업을 담당했다.개발은 Kotlin 과 SpringBoot 로 진행했다. 개발 및 테스트 과정 중에는 인메모리 DB(H2)를 사용했고, MySQL 은 마지막에 가서야 붙였다. 네트워크 왕복 비용도 없는 인메모리 데이터베이스를 사용한 덕분에 운영 상에서 각 잠금 방식에 어떤 차이가 있는지 영영 모르고 지나갈 뻔 했다.당연하게도 동시에 쿠폰 발급 요청을 보냈을 때, 같은 쿠폰이 중복 발급되고 남은 재고 수량에 오차가 생겼다. 1,000건을 보내면 요청 수의 2~30% 정도의 비율로 오차가 발생했다. 여러 스레드가 같은 재고(차감 전의 재고)를 동시에 읽고 각 스레드가 아직 재고가..
-
Study
무엇을 단위로 볼 것인가?
단위 테스트란?단위 테스트란 무엇일까? 당장 구글에 단위 테스트를 검색하면 '가장 작은 단위의 코드 블록(함수 또는 메서드)을 검증하는 테스트'라는 설명이 보편적이다. 나도 그렇게 알고 있었고, 실제로 그렇게 많이 알려져 있는 듯 하다. Classicist, Mockist그런데 최근에 단위 테스트란 무엇인가를 정의하는 두 학파(클래시스트(Classicist), 모키스트(Mockist)) 가 있다는 것을 알게 됐다. 대뜸 처음 듣는 말이어서 두 학파의 이야기를 알아보았다. 두 학파가 다르게 보는 것은 '무엇이 단위인가?' 에 대한 것이다. 여러 가지 차이가 있지만, 근본적으로 단위를 보는 관점이 다름으로부터 오는 차이들이다. Classicist 는 단위를 [관련 클래스들의 모음] 으로 정의한다. 이는 너무..