profile
개발 공부는 🌳 구조다…
post-thumbnail

[Performance] Stress Test & Load Balancing

오늘은 크누 마켓 API 서버의 성능 측정과 부하 분산을 위해 로드 밸런싱을 적용한 과정을 적어보고자 한다.서버에 부하를 주기 위해 사용한 성능 테스트 라이브러리인 Artillery에 대한 특징에 대해 간략하게 소개하도록 하겠다.Artillery는 API 서비스, 채팅

2022년 3월 12일
·
0개의 댓글
post-thumbnail

[Architecture] Layerd Architecture & DI & Unit Test

오늘은 크누마켓 프로젝트 리팩토링 과정에서 Layerd Architecture를 적용하고 DI를 통해 Unit Test를 적용한 부분까지 한 번에 얘기해 보려고 한다. 프로젝트에서 사용한 주요 스택은 다음과 같다.Language: Node.js, TypescriptFr

2022년 2월 28일
·
0개의 댓글

[CI/CD] Github Actions & AWS Elastic Beanstalk (2)

Github Actions를 이용한 CI 선정 이유? 많은 CI 툴이 있고 조사해 보니 가장 많이 쓰이는 CI 툴로는 Jenkins와 Travis CI가 있었다. 나 역시 Jenkins와 Travis CI를 사용하려 했지만 다음과 같은 이유로 Github Actio

2022년 2월 9일
·
0개의 댓글

[Book Review] 스프링5 프로그래밍 입문 Ch04 ~ 06

책을 읽고 중요한 부분만 정리한 글이므로 글의 흐름이 원활하지 않습니다.의존 대상을 설정 코드에서 직접 주입하지 않고 스프링이 자동으로 의존하는 빈 객체를 주입해주는 기능이다.의존을 주입할 대상에 @Autowired 애노테이션을 붙이기만 하면 된다.필드에 @Autowi

2022년 2월 2일
·
0개의 댓글

[Book Review] 스프링5 프로그래밍 입문 Ch02 ~ 03

책을 읽고 중요한 부분만 정리한 글이므로 글의 흐름이 원활하지 않습니다.스프링의 핵심 기능은 객체를 생성하고 초기화하는 것이다.ApplicationContext(또는 BeanFactory)는 빈 객체의 생성, 초기화, 보관, 제거 등을 관리하고 있어서 스프링 컨테이너라

2022년 1월 26일
·
0개의 댓글

[Book Review] 업무에 바로 쓰는 SQL 튜닝 2장 (1)

사용자는 DB에서 원하는 데이터를 가져오기 위해 SQL 문을 실행한다. 이때 파서(Parser)는 문법 에러가 있는지, DB에 존재하는 테이블인지 이러한 세부 사항을 다양한 문법 및 구문으로 검사한다. 이후 요청한 데이터를 빠르고 효율적으로 찾기 위한 전략적 계획을 수

2022년 1월 26일
·
0개의 댓글

[Book Review] 업무에 바로 쓰는 SQL 튜닝 1장

보통 데이터베이스를 다중화 구조로 구축 시 오라클 DB 서버는 통합된 스토리지 하나를 공유하여 사용하는 방식이지만 MySQL은 물리적인 DB 서버마다 독립적으로 스토리지를 할당하여 구성한다. 때문에 오라클의 경우 사용자가 어느 DB 서버에 접근하더라도 CRUD 모두 처

2022년 1월 24일
·
0개의 댓글
post-thumbnail

[Database] Paging query with index (1)

2021년 여름방학 기간 동안 크누마켓이라는 프로젝트를 진행했었다. 해당 프로젝트에 대해 간단히 언급하자면 내가 재학 중인 경북대학교 재학생을 위한 공동구매 서비스이다. 간단한 예로 배달 음식을 혼자 시켜 먹을 때 최소 주문금액 때문에 고민되었던 경험들이 있을 것이다.

2022년 1월 20일
·
0개의 댓글
post-thumbnail

[Spring] Filter/Interceptor (2)

클라이언트로부터 받은 Request url, body와 서버의 Response status-code, body를 로깅 하는 간단한 예제이다. Filter 인터페이스를 구현하면 되는데 구현할 수 있는 메서드는 크게 세 가지가 있다.init 메서드는 필터 객체를 초기화하고

2022년 1월 18일
·
0개의 댓글
post-thumbnail

[Spring] Dispatcher Servlet/Filter/Interceptor (1)

Spring Boot로 입문하다 보면 스프링으로 만들어진 웹 애플리케이션의 내부적인 동작이나 원리에 대해 궁금한 것이 한두 가지가 아니다. 나 또한 그런 궁금증으로 이 글을 쓰게 되었다. 오늘은 Dispatcher Servlet 전, 후로 동작하는 Filter와 Int

2022년 1월 16일
·
0개의 댓글
post-thumbnail

[Jest] Mocking

현재 리팩토링중인 Node/Express 기반의 프로젝트에서 테스트 라이브러리로 Jest/Supertest를 사용 중이다. 문득 Jest에서 제공하는 Mock 기능이 궁금해 글을 쓰기로 했다. 여러 블로그와 공식문서를 참고했고 가장 이해하기 쉬웠던 글을 링크로 남기도록

2022년 1월 15일
·
0개의 댓글
post-thumbnail

[Spring] Exception Handling

말 그대로 예외 처리라고 한다. 보통 유효성 검사에서 많은 예외 처리를 하게 되고 비즈니스 로직을 구현하면서도 하게 된다. 예를 들어 클라이언트로부터 회원 가입을 하기 위해 유저의 나이 속성을 받아와야 한다고 생각해 보자. 나이의 최솟값은 1, 최댓값은 99라고 해보자

2022년 1월 13일
·
0개의 댓글
post-thumbnail

[Spring] Validation

데이터에 대한 유효성 검사라고 할 수 있다. 물론 클라이언트 레이어에서 적절한 유효성 검사가 이루어질 수도 있지만 서버가 받은 데이터는 대부분 데이터베이스에 저장되기 때문에 더욱더 데이터 무결성을 지킬 필요가 있다. 따라서 서버 또한 유효성 검사를 할 필요가 있다.또한

2022년 1월 12일
·
0개의 댓글
post-thumbnail

[CI/CD] Github Actions & AWS Elastic Beanstalk (1)

지속적인 통합을 의미한다. CI를 성공적으로 구현할 경우 애플리케이션에 대한 새로운 코드 변경 사항이 정기적으로 빌드 및 테스트되어 공유 리포지토리에 통합되므로 여러 명의 개발자가 동시에 애플리케이션 개발과 관련된 코드 작업을 할 경우 서로 충돌할 수 있는 문제를 해결

2022년 1월 10일
·
0개의 댓글
post-thumbnail

[Spring] AOP (2)

간단한 REST API 컨트롤러 클래스이다.@PointCut 어노테이션에 지정된 파일(위 RestApiController Class를 의미)의 모든 메서드의 실행 전, 후로 호출된 메서드의 정보와 인풋, 아웃풋 데이터를 로깅 하는 예제이다.AOP를 적용할 첫 번째 포인

2022년 1월 9일
·
0개의 댓글
post-thumbnail

[Spring] IoC와 DI (2)

Java Bean 은 데이터를 표현하는 것을 목적으로 하는 자바 클래스이다. 특별한 것은 없고 Java Bean 규약에 맞춰서 만든 클래스를 뜻한다.Java Bean 규약은 다음과 같다.기본 생성자가 존재해야 한다.모든 멤버 변수의 접근제어 지시자는 private이다.

2022년 1월 6일
·
1개의 댓글
post-thumbnail

[Spring] AOP (1)

Aspect Oriented Programming의 약자로 관점 지향 프로그래밍이라고 한다. 어떤 기능을 구현할 때 주요 핵심 기능 그 외에 추가적으로 부가적인 기능이 있기 마련이다.여기서 부가적인 기능이라고 하면 비지니스 기능을 구현 시 필요한 기타 작업(로깅, 트랜

2022년 1월 1일
·
0개의 댓글
post-thumbnail

[Spring] IoC와 DI (1)

Java 객체를 개발자가 생성하여 직접 관리하는 것이 아닌 Spring Container에 객체 관리를 맡기는 제어 권한이 넘어감을 의미한다. 따라서 이것을 제어 역전 현상이라고 부른다. 그리고 이 container에 의해 관리되는 객체들은 Bean이라고 불린다.그렇다

2021년 12월 31일
·
0개의 댓글