망가진 로컬환경 고치기

Today I Learned 날짜 2024년 3월 5일 화요일 내용 스프린트 2일차 데이터베이스 모델링을 내가 처리하지 않았다. 하지만 이전에 이미 수 차례 회의를 통해 어떻게 작성할지 계획했기 때문에 이를 바탕으로 코드를 작성할 수 있었다. 이것저것 빠진 부분도 조금 있었지만 열심히 짜놓은 덕분에, 우선 기능 함수부터 편하게 구현할 수 있었다. 내일 테스트서버에 적용될 예정이니 pull 받아서 마이그레이션 하고 나면 본격적으로 함수를 테스트하고 완성할 수 있을 것 같다. 생각보다 너무 수월하게 잘되서 불안한데.. ...

2024년 3월 5일 · 2 분 · 배준수

위젯 스프린트 시작!

Today I Learned 날짜 2024년 3월 4일 월요일 내용 스프린트 돌입! 간과한 것 이번 스프린트 때는 나름 철저히 계획을 세운다고 공을 많이 들였다. 오늘 시작하자마자 내가 크게 놓친 부분이 있다는 걸 깨달았다. 우리 서비스는 서버가 2개다… 기존에 있던 세일즈팝업을 위한 추상클래스는 shop 서버에 있다. 이와 관련된 데이터는 Shopify에서 웹훅을 통해 받는 주문 데이터를 이용해 연산하기 때문이다. 반면 위젯과 관련된 것들은 모두 리뷰서버에 있었다. 따라서 리뷰서버에서 위젯에 필요한 데이터를 shop 서버에 요청하고, shop 서버에선 이 데이터를 연산하여 반환해주어야 한다. ‘그냥 DB에 저장하면 되겠지!’라고 생각하고 넘겨버렸다.. 사실 이렇게만 되었어도 크게 당황은 안했을텐데.. ...

2024년 3월 4일 · 1 분 · 배준수

데이터베이스의 사용성 고려해보기

Today I Learned 날짜 2024년 2월 29일 목요일 내용 데이터베이스 계획 변경 다음 주에 시작될 스프린트의 공수와 일정을 확정짓는 플래닝미팅에 들어가기 전 마지막으로 PRD 기획 문서와 피그마를 체크했다. 기존에 열심히 고민하고 공부해서 이번에 추가될 데이터베이스 테이블을 짰는데, 몇가지 놓친 부분이 있어 크게 변경했다. 사용방식 기존 ERD 상으로, 위젯 테이블은 2개의 연관된 자식 테이블을 가지게 된다. 데이터 설정의 기준을 담는 테이블과 위젯에 포함되는 상품에 대한 테이블이다. 어제, 그제 열심히 고민한 부분은 후자였다. 하나의 상품이 위젯에 포함되는 갯수만큼 데이터를 만들 것인지, 상품 당 하나만 가지고 있을지. 전혀 생각하지 못한 부분이 뒤늦게 떠올랐고 의미없는 고민임을 알게됐다. 각 위젯은 데이터를 포함하기 위한 기준을 설정해야 한다. 예를 들어, 최근 이 상품을 구매한 고객에 정보의 최대 기준을 1일, 7일, 30일 등으로 가능하다. 똑같은 상품을 10일전에 김씨가 주문했어도 어떤 위젯에서는 최근 구매정보가 없다고 입력되야 하고 다른 위젯에서는 이 정보가 입력되야 한다. 같은 상품이라고 모두 정보가 같다는 보장이 없다는 의미이다. 따라서 각 상품은 위젯에 포함된 갯수만큼 데이터 정보를 가지고 있는게 맞았다. 황소 뒷걸음질 치다 쥐 잡은 꼴이네. ...

2024년 2월 29일 · 3 분 · 배준수

기능 VS 아키텍처

Today I Learned 날짜 2024년 2월 28일 수요일 내용 세일즈 팝업 이번 스프린트에서 가장 고민이 깊은 부분은 실시간성 데이터들이다. 상품을 보여주는 위젯에 “5분 전에 춘천 사는 김씨가 샀어!” 라던가, “재고가 5개 밖에 안남았어!” 라고 말해줘야 한다. 이 데이터가 내일 들어와도 “5분 전에 춘천 사는 김씨가 샀어!”라고 고정되어 있다던가, 아직도 5개가 남아있다면 효과가 떨어질 수 밖에 없다. 재고가 1개로 줄어들었다던가, 방금 구매한 고객에 대한 정보가 바뀌어있어야 한다. 기존에 알파리뷰에 있는 세일즈팝업이 이 데이터를 이용한다. 재고, 상품 상세정보 페이지 방문자 수, 판매량, 최근 구매 내역이나 리뷰 작성 내역등이 포함된 팝업이다. 이 위젯은 기존에 있던 다른 위젯들과는 구성이 조금 다른데, 렌더링이 우리 서버에서 발생하지 않는다는 것이다. 기존 위젯은 App proxy를 이용하여 다음과 같이 발생한다. ...

2024년 2월 28일 · 3 분 · 배준수

데이터의 소스를 찾아서

Today I Learned 날짜 2024년 2월 27일 화요일 내용 Underscore(_) 기존의 코드들을 살펴보다가 한 가지를 발견했다. def test(): 와 def _test(): 의 차이는 무엇인가? 어떤 함수들은 정의 앞에 밑줄이 그어져 있었다. 저번에 한번 봤을 떈 오타겠거니 넘어갔는데 그런 함수가 많다! 관련된 부분을 찾아봤다. 클린 아키텍처나 클린코드 등의 책을 읽으면 수 없이 많이 나오는 이야기지만, 정의된 함수를 다른 곳에서 알 수 있게 할 것인가 말 것인가는 중요한 고민이다. 이에 대한 정답은 아직 나도 공부중이라 답변은 힘들고.. javascript에는 public, private, protected 등 접근을 제어하는 설정들이 존재한다. 반면 이 개념이 python에는 없다. 대신 표시하기 위해 관습적으로 _나 __(2개)를 사용한다. 1개인 def _test(): 는 내부적으로 사용되는 것이라 는 뜻이고, 2개는 클래스 내부에서만 사용되는 메서드나 속성에 사용된다. 결론은 여기 말고 다른곳에서 쓰지말라는 뜻. ...

2024년 2월 27일 · 2 분 · 배준수

데이터베이스 구조 고민과 Shopify App proxy

Today I Learned 날짜 2024년 2월 26일 월요일 내용 기존 로직 파악 다음 스프린트 때 구현할 기능들에 대해 코드 초안을 작성하고 있다. 기존에 구현되어 있는 방식을 이해하지 못해 막혀있는 부분과 작성했지만 개선해야 할 부분을 회의를 통해 알게 되었다. 고객의 스토어에 표시할 위젯을 Shopify theme asset에 저장할 수 도 있다. 하지만 이 때 위젯을 가지고 있는 것은 shopify가 된다. 우리 서비스에서 제공하고, 수정 및 변경이 원활하기 위해선 우리가 가지고 있는 것이 바람직하다. 우리 서비스를 설치한 스토어는 테마를 수정하는 에디터에서 앱 블록을 추가할 수 있다. 앱 블록에는 스크립트가 작성되어 있는데, “어떤 위젯이 필요하니 app proxy를 이용해 알파리뷰 서버의 특정 endpoint로 요청하라”고 적혀있다. 우리 서버는 해당 요청을 받으면 이에 맞는 위젯 HTML에 알맞은 데이터를 추가하여 보내준다. 데이터까지 입력된 완성된 HTML을 보내주는 것이다. 앱 블록은 받은 것을 출력하면 된다. ...

2024년 2월 26일 · 4 분 · 배준수

기술개발 초안 작성

Today I Learned 날짜 2024년 2월 23일 금요일 내용 내가 짤 코드 생각해보기 이전부터 항상 느끼던 갈증은 “내가 어떻게 코드를 작성할 것인가”를 미리 생각하지 못하는 것에서 발생했다. 직접 VS Code 에 입력할 때가 되어서야, ChatGPT에게 물어보고 나서야 내가 나아갈 방향을 안다는 것은 내가 개발자가 아닌 코드싸개에 불과하다는 걸 시사한다. 지난 1월 30일에 작성한 TIL에 있던 내용이다. 내가 뱉은 말을 지키기 위해, 실행에 옮겼다. 어제 개발자들끼리 회의도 있었기 때문에 충분히 가능하다고 생각했다. ...

2024년 2월 23일 · 2 분 · 배준수

스프린트 전 개발팀 회의

Today I Learned 날짜 2024년 2월 22일 목요일 내용 3회의 다음 스프린트의 기획과 디자인이 어제 나왔다. 저번 스프린트에 대한 회고에서, 사전에 개발자들끼리 조율하지 않아 발생하는 문제들에 대해 팀 구성원 모두 인지하고 있었기 떄문에 약속한대로 프론트와 백 간의 주고 받는 데이터에 대해 이야기를 나누었다. 이 Try의 관찰자로서 어떻게 이야기를 주고 받을지에 대해 큰 틀을 짰다. 데이터 그 자체에 주목하며 각 페이지 별로 필요한 데이터를 확인한다. ex. 위젯의 생성 시간, 상품의 평점 등 ...

2024년 2월 22일 · 2 분 · 배준수

기획서로 계획 작성

Today I Learned 날짜 2024년 2월 21일 수요일 내용 스프린트 파악하기 다음에 진행될 스프린트의 기획과 디자인이 나왔다. 완성본은 아니지만, 플로우차트와 PRD 문서를 참고하면서 내가 무엇을 어떻게 구현해야 할 지 파악했다. 여러 부분에서 어떻게 구현해야 할지 난감하기도 하고, 내가 잘 모르는 부분이라 걱정도 된다. 실시간 데이터를 반영해야 하는 부분이 있다. 최근 작성된 리뷰, 구매 등을 파악해야 하는데 이 부분이 많이 난감하다. 기존에 우리 서비스에도 있는 내용이긴 한데, 스크립트가 스토어의 테마에 추가되는 부분이라 어떻게 구현하는 건지 파악이 힘들다. 실시간 정보를 어디에 저장하고 어디서 받아오는지 빨리 파악해야 하는데.. 고객에게 성과를 보여주기 위해 클릭 수를 체크해야 한다. 이 부분도 어떻게 처리해야 하지… 장바구니도 Shopify 쪽에서 관리하는 걸로 알고 있는데 프론트에서 호출할 때마다 카운트해서 저장해야 되나..? 아직까지는 “잘” 구현하는 것보단 “어떻게” 구현해야 할 지가 더 큰 문제긴 하다. 기획 문서를 봐도 잘 떠오르지 않는다. 갈 길이 참 멀구만 ...

2024년 2월 21일 · 1 분 · 배준수

당연히 안되는 것 구별해내기

Today I Learned 날짜 2024년 2월 20일 화요일 내용 유지 보수 종료 유지 보수 스프린트가 종료됐다. 이전에 AI 서비스를 만드는 스프린트와 다음에 진행될 것의 사이에서 이전에 부족하거나 고쳐야 할 부분을 다듬었다. 개인적인 욕심으로는, AI 때 만든 기능들에 대한 테스트 코드를 추가하고 싶었는데 미루길 반복하다 시간이 부족해서 못했다. 주어진 시간이 없다기 보단, 내가 AI 시작하기 전에 완성했어야 했지만 그러지 못한 것들에 낭비된 시간, 이메일 CSS 한다고 날린 시간이 크다. 개인적으로 시간을 들여서라도 좀 만들어놔야겠다. ...

2024년 2월 20일 · 2 분 · 배준수