본문 바로가기

우아한테크코스 4기48

부하테스트 (0) - 고가용성과 부하테스트 부하테스트(1) - 부하테스트의 종류와 목적 부하테스트(2) - 부하테스트 적용하기 부하테스트(3) - WAS, Connection Pool 설정하기 부하 테스트를 왜 해야하는가?에 대한 의문은 고가용성의 서비스를 만들기 위한 노력이 없다면 갖기 힘든 의문이라고 생각합니다. 따라서 부하테스트 시리즈의 첫 글을 고가용성과 부하테스트로 시작해보려 합니다. 물론 저 또한 큰 서비스를 운영해본 경험이 없기 때문에 글에 일부 오점들이 드러나겠지만, 부하테스트를 학습하는 과정에서 갖게 된 제 생각과 운영 중인 작은 서비스에 적용한 경험을 솔직하게 기록한다고 생각하며 이 시리즈를 시작합니다. 1. 고가용성 최근 채용 공고를 둘러 보면 흔히 고가용성이라는 단어를 들어볼 수 있습니다. 쉽게 볼 수 있는 단어이지만 서비스.. 2022. 9. 8.
의존관계 분리 경험 공유(2) 안녕하세요. 땡쿠팀의 백엔드 개발자 후니입니다. 지난 포스팅에 이어서 강한 의존관계를 분리하는 방법을 소개하고자 하는데요. Separated Interface 패턴을 이용하여 의존관계를 분리한 제 경험을 작성해보겠습니다. Separated Interface? 개발을 하다보면, 서로 다른 두 개의 시스템 파트의 결합도를 줄임으로써 설계의 수준을 개선할 수 있습니다. 일반적인 구조를 부정하고 다른 패키지를 참조해야 할 때 이 패턴을 주로 사용할 수 있는데요. 구현체를 상대 패키지에 두고, 인터페이스를 현재 패키지에 위치시키는 것입니다. 그러면 클라이언트는 구현체에 대한 정보는 참조할 필요 없이 현재 패키지의 인터페이스만 참조하게 되겠죠? 문제 상황 단건 쿠폰을 조회할 때, 쿠폰과 연관된 예약 / 만남 정보를.. 2022. 8. 10.
의존관계 분리 경험 공유(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.