작업일지(19)
-
realstatelab.com | HTTP 로그로 행동패턴을 분석하던 중 발견한 이상한 요청들
개요25년 3월 4일, 백엔드 개발자로서 근무하며 배운 내용들을 되짚어볼겸. 기획부터 디자인, 개발까지 주체적으로 누군가에게 도움이 될 수 있는 서비스를 개발해보고 싶은 생각에 'realstatelab.com'을 출시하게 되었습니다. 아직 개발 초기라서 그런지 다소 엉성한 부분이 있어 다양한 시행착오가 있었는데, 그중에 가장 인상깊었던 사례들을 틈틈이 공유해보고자 합니다. 이번 게시글에서는 Http 로그를 남기는 과정에서 알게된 문제 상황과 그 문제를 해결한 과정을 소개하려고 합니다. HTTP 로그를 남긴 이유?처음에는 단순히 사용자의 행동 패턴을 분석하여, 사용자 맞춤 추천 매물 데이터를 제공하는 기능 개발에 필요한 자료로서 로그를 남기기로 했습니다. 작은 규모의 서비스이기에 별도의 로깅 서비스를 사용..
2025.03.18 -
작업일지#15 그 동안의 회고 및 앞으로의 계획
회고 마지막으로 작업일지를 작성하고, 약 5개월이 지났다. 원래 코딩하는 것 자체를 좋아했기 때문에, 분명 회사에서 코딩을 하더라도, 집에서도 코딩할 체력이 남아있을거라고 생각했다. 그런데.. 생각보다 힘이 부친다. 출/퇴근 거리가 왕복 3시간 정도 걸리고, 취준 막바지까지 운동을 거의 하지 않아, 체력도 저질이 되어, 일끝나고 퇴근하고 방에 들어오면, 컴퓨터 책상보다는 침대에 눈이간다... 개발자는 평생 공부해야하는 직업인데, 이런식이면, 코딩은 커녕 기술 서적 1페이지 읽지도 못하는 날이 쌓여만 갈 것이다. 그래서 대책을 세워봤다.. **1. 출 퇴근 시간을 활용하기** 생각보다 회사와의 거리가 멀어서 가만히 서있는 시간이 길다. 이 시간을 허투루 쓰지 않기 위해, 항상 기술 서적을 가방에 한권 씩 ..
2022.09.02 -
[회고] 기능 구현부터 배포 자동화까지... -2- CI/CD를 어떻게 구현해야 할까?
본 게시글은 https://github.com/f-lab-edu/double-shop에서 CI/CD를 구성하는 데 진행했던 과정을 정리한 내용입니다. CI/CD를 설계하는 데 필요한 방향을 찾는 데는 도움이 될 수 있겠지만, 구체적인 구현 기술에 대한 내용을 찾는 다면 이 게시글은 도움이 안 될 수 있습니다. 개요 저번 게시글에서는 CI/CD가 왜 필요한지에 대해 간단히 나의 생각을 정리해보았다. 내용을 요약해보자면, CI/CD와 같은 복잡하고 어려운 작업을 왜 해야 하는지 어떻게 해야 하는 지를 구체적으로 정의하는 과정이 필요하다는 것이었다. 물론 개인 프로젝트를 진행한다면, 이 과정은 필요 없을 것이다. 하지만, 보통 개발회사에서 한 명의 개발자가 하고 싶은 것을 마음대로 하다가 안되면 그냥 그만둬버..
2022.04.22 -
[회고] 기능 구현부터 배포 자동화까지... -1- 왜 CI/CD가 필요할까?
본 게시글은 https://github.com/f-lab-edu/double-shop에서 CI/CD를 구성하는 데 진행했던 과정을 정리한 내용입니다. CI/CD를 설계하는 데 필요한 방향을 찾는 데는 도움이 될 수 있겠지만, 구체적인 구현 기술에 대한 내용을 찾는 다면 이 게시글은 도움이 안 될 수 있습니다. 개요 최근에, Jenkins CI툴과 github action을 활용하여, CI/CD 구성을 1차적으로 완료하였다. 시작하기 전부터 만만한 작업이 아니라고 생각했지만, 실제로 해보니, 과정을 이해하는 것도 쉽지 않았고, 이해한 후에 실제로 구현해보는 것은 더더욱 어려웠다. 이번 게시글에서는 CI/CD를 구성하기 위해 겪었던 시행착오 과정을 정리하여, 그동안 수행했던 학습과정과 삽질들을 기록하여, 퀄..
2022.04.22 -
작업일지#14 Sync와 Async 속도차이
트랜잭션 단위 상품 등록 was 클라이언트 요청 세션 서버 리소스 접근을 위한 인증 확인 파일서버(S3) 상품 이미지 put 요청 aws lambda를 통해, 원본 이미지를 섬네일 사이즈로 압축 및 복사 (총 2개의 이미지를 2개의 s3 bucket에 저장) was s3 키값 전달 데이터베이스 MySQL에 상품 정보 Insert was 상품 등록 성공 여부 및 추가된 상품 정보 응답 메시지로 클라이언트에 전달 실험을 하게 된 계기 기존에는 파일 업로드를 포함하여, 단일 기능을 구현하는 데 필요한 비즈니스 로직을 전부 하나의 데이터베이스 트랜잭션에 포함하였다. 그러나, 최근에 이미지 업로드 기능을 추가하면서, 로컬 환경에서 실험했음에도 불구하고, 응답 시간이 거의 2배 이상 늘었다. tomcat의 thre..
2022.03.24 -
작업 일지#13 프로덕션 코드 리팩토링 - JPA로 이전
프로젝트 진행이 거의 7개월이 넘어간다. 알고리즘, CS 공부와 병행하는 상황이라, 프로젝트에 시간을 많이 투자하질 못해서 아쉽긴 하지만, 프레임워크만 잘 사용한다고, 애플리케이션 코드의 퀄리티와 이해도가 깊어지는 것은 아니니, 꼭 병행해야만 했었던 부분이었다. 어쨌거나, 기간이 길어지고, 그 기간 동안, 다양한 학습을 하면서, 진행했던 프로젝트 코드들을 살펴보니, 다음과 같은 문제점들을 발견했다. 데이터 액세스 로직 구현의 경우, myBatis를 활용하였는데, 자바 객체와 릴레이션의 구조적인 차이로 인해 POJO 스타일의 코드를 일부 포기할 수 밖에 없었다. (ex. 자바의 경우, 의존하는 객체는 해당 인스턴스 변수를 참조하는 방식으로 구현해야 하는데, 릴레이션의 경우, FK를 참조해야 한다.) 간단한..
2022.03.05