본문 바로가기

전체 글58

의존관계 분리 경험 공유(1) 의존관계 분리 경험 공유(2) 안녕하세요. 땡쿠팀의 백엔드 개발자 후니입니다. 이번 포스팅에서는 땡쿠팀에서 겪은 패키지간 강한 의존을 막기위한 경험을 소개하고자 합니다. 땡쿠팀은 우아한 테크 코스 내에서 사용되는 쿠폰을 예약하고 사용하는 서비스를 제공하는데요. 따라서 예약이나, 만남 일정이 수락, 생성됨에 따라 도메인간 경계를 넘어 상태를 변화하거나 객체를 생성하는 코드들이 필요합니다. 비즈니스 요구사항에 맞게 개발하다보니 자연스럽게 의존성의 흐름이나 도메인 간 결합도를 느슨하게 하는 데 집중하게 됐습니다. 덕분에 여러가지 고민과 시도를 해보았는데요. 지금부터 패키지간 강한 의존을 끊어내기 위한 땡쿠팀의 고민과 경험을 단계적으로 설명해보겠습니다. 1단계. Domain이 올바른 역할을 하고 있는가? 땡쿠팀.. 2022. 8. 10.
[Logback] Spring Logback configuration 과정 (2) - Spring 이번 포스팅에는 Spring profile 별, 에러 레벨 별로 다른 로그 정책을 설정하는 방법에 대해 소개해보겠습니다. 지난 포스팅에 살짝 언급했듯 Spring은 기본 로깅 전략을 담은 파일을 갖고 있습니다. base.xml ​ 지난 포스팅에 소개했었던 console-appender와 file-appender를 사용하고 INFO 레벨일 때 해당 appender를 적용하는 설정 파일이고, 우리가 스프링을 실행하면 볼 수 있는 로그이기도 합니다. {LOG_FILE:- default} 형태는 LOG_FILE이라는 property가 존재하지 않을 경우, 기본 값으로 default를 사용하겠다는 의미입니다. property는 와 같이 key-value 형태로 지정할 수 있습니다. 어떠한 로그 설정도 없으면 이 .. 2022. 7. 17.
[Logback] Spring Logback configuration 과정 (1) - Appenders 프로젝트를 진행하다 보면 Exception Handler에서 예외가 잡혀 stackTrace를 보지 못하고 에러 지점을 찾지 못하는 경우가 있습니다. 그런 경우에 Spring Boot에서 기본으로 제공하는 Logback을 사용하는데요, Lombok 플러그인을 사용하면 그 사용법이 정말 간단합니다. // lombok과 spring-boot-starter-web을 dependency에 추가해야합니다. @Slf4j public class LogbackTest { public static void main(String[] args) { log.info("어쩌규"); log.error("저쩌구"); } } 이렇게 코드로 작성한 로그를 항상 콘솔로 보며 모니터링 할 수 있을까요? 당연히 불가능합니다. 따라서 Spr.. 2022. 7. 16.
[Linux] Shell Script로 자기소개하기 이번 포스팅은 Shell Script로 변수를 할당하는 방법을 학습한 뒤 원하는대로 자기소개를 만들어 본 경험을 소개하고자 합니다. 입력한 변수의 개수 Linux shell script 실행 명령을 날릴 때, 변수를 함께 스크립트로 넘길 수 있습니다. ./introduc.sh a b c 위 명령어처럼 공백을 두고 명령문을 실행하면 a, b, c가 script의 변수로 할당됩니다. 변수로 할당된 내용을 사용하는 다양한 명령어가 있는데요, 그 중에서도 변수의 개수와 변수를 사용하는 방법은 아래와 같습니다. $# Stores the number of command-line arguments that were passed to the shell program. $0 Stores the first word of .. 2022. 7. 11.
[AWS] EC2 하나를 생성하기 위해.. AWS를 이용하여 서버를 여는 것은 정말 간단합니다. AWS에서 누구나 쉽게 서버를 열 수 있도록 세팅을 해놓았기 때문이죠. 이번 포스팅에서는 EC2 인스턴스를 통해 서버를 열기 위해 AWS가 어떤 일을 해주는지 네트워크 과정에서 학습한 내용을 뇌피셜로 정리하고자 합니다. AWS Cloud 먼저 EC2 인스턴스를 열려면 회원가입이 필요합니다. 계정을 생성하면 AWS에서는 계정 id를 지정하여 구분합니다. 즉, 계정을 생성한 것 만으로 AWS Cloud를 생성할 준비를 모두 마치게 된 것이죠. AWS Cloud의 서비스는 계정 ID를 식별자로 달고 있기 때문에 다른 계정과 독립적으로 클라우드 서버를 운영할 수 있는 것입니다. 이제 계정을 생성한 것만으로 우리는 아래의 박스를 하나 갖게 됐습니다. 이제 이 .. 2022. 6. 27.
[Mysql] Index로 조회 성능 개선하기 데이터 베이스 테이블에 수백만건의 데이터가 존재한 상태로 특정 값을 조회하고자 할 때 모든 열을 다 살펴보는 것은 효율적이지 않습니다. 이 비효율성을 개선하기 위해 MySQL에는 index라는 개념이 존재합니다. 이번 포스팅에서는 MySQL을 기준으로 index에 대해 학습하고 조회 성능을 개선하는 사례를 공유하고자 합니다. Index 인덱스는 목차입니다. 혹은 특정 내용을 기반으로 쉽게 데이터를 탐색할 수 있도록 제공하는 무언가를 인덱스라고 부릅니다. 특정 데이터를 쉽게 탐색할 수 있도록 목차를 제공해주니 데이터의 양이 많아질 수록 SELECT 성능은 좋아집니다. 하지만 매 데이터를 INSERT, UPDATE, DELETE할 때 마다 새 목차를 생성하다 보니 데이터 변경 작업이 많아질수록 MySQL 자.. 2022. 6. 20.