아워메뉴 프로젝트를 개발하면서 공부한 내용입니다 (삽질한 내용입니다) K6K6는 오픈소스로 관리는 확장 가능한 부하 테스트 도구이다. K6는 개발 친화적인 코드를 제공하기 위해 JavaScript를 통해 테스트 시나리오를 작성할 수 있고, K6를 사용하여 성능 문제를 확인할 수 있다.https://grafana.com/docs/k6/latest/ Grafana k6 | Grafana k6 documentationGrafana Cloud k6 Leverage the k6 OSS capabilities in Grafana Cloud, with built-in dashboards, insights into your application performance, and the ability to bring to..
아워메뉴 프로젝트를 개발하면서 공부한 내용입니다 개발을 하면서 요구사항이 변경되서, 기존 코드를 변경해야 하는 경우는 개발자에게 매우 자주 있는 일이다. 개발자는 코드를 변경하면서 기존 코드의 문제점이나 더 좋은 코드가 무엇인지 고민해볼 수 있는 시간을 가지게 된다. 배경기존 서비스V1에서는 안드로이드에서 서비스에 사용되는 기본 이미지를 모두 저장하였지만, V2를 진행하면서 기본 이미지에 대해 이미지의 저장에 대한 담당과 이미지 정보를 제공하는 방식에 대해서 백엔드와 안드로이드간의 회의가 있었다. 먼저 이미지 저장에 대한 책임을 변경하였다.안드로이드 자체적으로 관리 (기존 방식)서버에서 관리 (변경된 방식)가장 큰 이유는 안드로이드 앱에 대한 크기를 줄이기 위함이였다. 기본 이미지가 적지 않았고, 그렇다..
아워메뉴 프로젝트를 개발하면서 공부한 내용입니다 앞서 그라파나와 프로메테우스, CloudWatch를 통해 컴퓨팅 리소스에 대한 매트릭을 모니터링하였다.이번에는 웹서버 로그 모니터링을 구축하고자 한다.1. 엘로이 (Alloy)엘로이는 그라파나에서 제공하는 모니터링 관련 리소스 수집 에이전트이다. 로그 수집 도구로는 프롬테일(Promtail)을 주로 사용한다고 알고 있고, 프롬테일을 사용할 계획이였지만, 공식 문서에서 프롬테일 대신 엘로이 사용을 권장하고 있어 엘로이를 사용하기로 결정했다.기존에 로그 수집은 프롬테일에서, 매트릭 수집은 프로메테우스에서 제공한다면, 엘로이에서는 통합으로 로그 수집, 메트릭 수집 모두 지원한다. 단 엘로이는 에이전트이기 때문에 매트릭이나 로그 수집에 대해 모니터링을 위해 프로메..
아워메뉴 프로젝트를 개발하면서 공부한 내용입니다 기존 아워메뉴는 프리티어로 인해 API 서버를 제외한 모니터링을 서버를 온프레미스으로 구축하였다. 프로젝트를 개발함에 따라 모니터링 서버를 EC2 위에서 구성하기로 하였다.1. 그라파나 (Grafana)모니터링, 시각화 도구로 최근들어 많이 사용되는 도구로 알고 있는 그라파나를 선택했다.그라파나를 도커위에서 구동할지 그라파나 자체를 설치해서 구동하는 2가지의 방법중에 그라파나 자체를 설치하기로 했다. 해당 서버는 그라파나를 중지하지 않고 계속 모니터링하기 때문에 도커의 재배포의 이점을 사용하기에는 적합하지 않다는 생각도 들었고, 그라파나를 처음 사용해보기 때문에 모니터링 기술을 먼저 컨테이너 없이 사용해보고 싶었다. 그라파나는 다음과 같은 리소스를 최소로 ..
개인 공부 목적으로 작성된 포스팅입니다. 왜곡된 내용이 포함되어 있습니다. 프로젝트에 Github Action Workflow를 추가 수정할때마다, 별도의 프라이빗 테스트 레포를 통해 Github Action을 테스트하는 등 테스트에 불편함이 있었다. 그러던 와중에 Github Action를 로컬에서 테스트하도록 지원하고 있는 기술을 알게 되었다. Acthttps://github.com/nektos/act GitHub - nektos/act: Run your GitHub Actions locally 🚀Run your GitHub Actions locally 🚀. Contribute to nektos/act development by creating an account on GitHub.github.c..
아워메뉴 프로젝트를 개발하면서 공부한 내용입니다. 아워메뉴를 다시 개발하면서 V1에서 고려하지 못했던 엔티티 설계를 다시 하였다. V1 에서 엔티티 설계를 잘못해서 프로젝트 중반에 예상하지 못한 문제를 많이 만나게 되었는데, 같은 실수를 반복하지 않기 위해 처음부터 다시 설계 하였다.좋은 ERD, 좋은 엔티티어떤 ERD를 좋다고 할 수 있을까?데이터베이스 수업시간에 DB 설계와 관련하여 "정규화"라는 개념을 배우게 된다. "정규화"를 통해 관계형 데이터 베이스의 무결성을 보장하고, 용량을 줄일 수 있다. 그러나 우리가 실제로 만나는 ERD는 이론으로 배웠던 "정규화"와 다르다.일단 실제로 우리가 구성하고자 하는 비즈니스 로직이 생각보다 복잡하다. 크게 문제가 되지 않는 경우 편의성을 위해서 반정규화 ..
0. KUIT동아리 프로젝트를 진행하였다. 팀원은 10명으로 PM, 디자이너, FE, BE 으로 이루어져 있었고, BE가 4명으로 가장 많았다. BE를 파트장을 맡게 되었는데, 팀원들을 이끌어 보는 적이 많지 않았기 때문에 원할한 협업을 하기 위해 노력했다. 기존에 해봤던 개발에 SSR이 였기 때문에 프론트과 소통할 수 있는 좋은 기회였다.1. 기획팀에 합류하여 처음 했던 것은 기획에 대한 전반적이 설명을 들었다. 기획을 PM이 이미 정하고 UI/UX도 어느정도 나온 상태이기 때문에, 만약 기획적으로 변경해야할 부분이 있다면 최대한 기획의 큰 틀에서 벗어나지 않는 선에서 해야했다.회의간에 이야기했던 내용은 대부분 두가지였다.해당 기능이 있는 이유가 뭔가요? (의도 파악)해당 기능을 이렇게 구현하려고 하는..
이 포스팅은 공부 목적으로 작성된 포스팅입니다. 왜곡된 내용이 포함되어 있을 수 있습니다 방학 중에 진행중인 프로젝트에서 식당 관련된 요구사항이 있었다.식당정보, 식당 메뉴 영업시간, 식당 사진과 같은 식당 세부 정보를 조회할 수 있다.식당의 위치를 조회할 수 있다.사전 조사식당 정보를 제공하는 OPEN API, 공공 데이터가 있다고 생각하고 조사를 시작했지만 조사 하면서 제공되는 API가 없다는 것을 알게 되었다. 먼저 위치 정보를 알아야 하기 때문에 지도 API를 조사하였다, 대중적인 지도 API는 네이버 지도, 카카오 맵, 구글 맵가 있었다.각각 API를 조사했을때, 식당 세부정보를 위해 사용할만한 API는 없었다. 그나마 구글맵에서 유사하게 가게 상세정보를 제공하는 API가 있었는데 인자값으로 위..
계기 JPA에서 일대일 연관관계에서는 지연로딩이 적용되지 않는 경우가 있다. 프로젝트 진행중에 지연로딩을 지정하였음에도 지연로딩이 적용되지 않고 즉시로딩이 강제로 진행되는 것을 확인하게 찾아보게 되었다. 먼저 아래의 코드를 보자 사용자 정보를 가지고 있는 Member 엔티티와 사용자 세부 정보를 가지고 있는 MemberDetail 엔티티가 서로 일대일 연관관계를 가지게 된다. @Entity @Getter public class Member { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private int id; private String summoner; private int medal; private String puuid; private St..