전체 글 65

[우아한테크캠프 Pro] 4주차 미션 후기 (그럴듯한 서비스 만들기 - AWS)

우아한테크캠프 Pro 4주차 AWS 서비스 구성 및 배포 미션을 진행한 내용과 후기를 정리해보았습니다. 미션 저장소 https://github.com/Gyeom/infra-subway-deploy GitHub - Gyeom/infra-subway-deploy Contribute to Gyeom/infra-subway-deploy development by creating an account on GitHub. github.com 학습 내용 AWS 상에서 네트워크를 구성하며, 네트워크 기본 개념들을 학습해보아요. 컨테이너를 학습하고 3 tier로 운영환경을 구성해봅니다. 개발 환경을 구성해보고 지속적 통합을 경험해봅니다.. 단계별 요구사항 및 PR 리뷰 1단계 - 서비스 구성하기 미션 VPC 생성 Sub..

[우아한테크캠프 Pro] 2주차 미션 후기 (QnA - JPA)

우아한테크캠프 Pro 2주차 JPA 미션을 진행한 내용과 후기를 정리해보았습니다. 미션 저장소 https://github.com/Gyeom/jwp-qna GitHub - Gyeom/jwp-qna: QnA 서비스 QnA 서비스. Contribute to Gyeom/jwp-qna development by creating an account on GitHub. github.com 학습 내용 QnA 서비스를 만들어가면서 JPA로 실제 도메인 모델을 어떻게 구성하고 객체와 테이블을 어떻게 매핑해야 하는지 알아본다. 요구 사항 DDL(Data Definition Language)을 보고 유추하여 엔티티 클래스와 리포지토리 클래스를 작성해 본다. @DataJpaTest를 사용하여 학습 테스트를 해 본다. 객체의 참..

Spring Data JDBC에 대해 알아보자

이번에 팀에서 ORM 도입을 고려하고 있었는데, 구성원 대부분이 JPA 사용 경험이 없어 러닝커브가 우려 되었고 대안으로 사용할 수 있는 Spring Data JDBC에 대해 스터디를 진행했다. 심플한 컨셉을 가진 Spring Data JDBC에 대해 알아보자. [샘플코드] https://github.com/Gyeom/spring-data-jdbc-jooq-sample GitHub - Gyeom/spring-data-jdbc-jooq-sample Contribute to Gyeom/spring-data-jdbc-jooq-sample development by creating an account on GitHub. github.com Spring Data JDBC It aims at being concep..

Spring Data JDBC 2022.12.13

Grafana k6 사용하여 부하테스트 하는 방법 3

이번에는 Grafana와 연동하여 모니터링 데이터를 시각화하는 실습을 진행해보겠습니다. 대시보드 구성 1. influx db 설치 influx db 는 8086 포트를 점유합니다. $ sudo apt install influxdb 2. grafana 설치 grafana 는 3000 포트를 점유합니다. 따라서 보안그룹에서 자신의 IP 에 대해 3000 포트 open 정책을 추가합니다. 초기 비밀번호 : admin / admin $ sudo apt install grafana ubuntu 20.04 인 경우 $ wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add - $ echo "deb https://packages.grafana.com..

DevOps./Infra 2022.12.07

Grafana k6 사용하여 부하테스트 하는 방법 2

이번에는 k6를 이용해서 부하테스트 진행하는 방법을 알아보겠습니다. k6 설치 $ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys C5AD17C747E3415A3642D57D77C6C491D6AC1D69 $ echo "deb https://dl.k6.io/deb stable main" | sudo tee /etc/apt/sources.list.d/k6.list $ sudo apt-get update $ sudo apt-get install k6 Smoke Test 테스트를 진행하기 위해서는 script가 필요하기 때문에, 다음과 같이 테스트 시나리오에 필요한 로직을 작성합니다. # smoke.js import http from..

DevOps./Infra 2022.12.07

Grafana k6 사용하여 부하테스트 하는 방법 1

부하테스트를 진행하기전에 어떠한 테스트들이 있고, 테스트를 위한 설정 값들은 무엇이 있는지 알아보자. Smoke Test 최소 부하 상태에서 시스템에 오류가 발생하는지 확인하는 테스트 VUser: 1~2로 구성 Load Test 적절한 부하를 발생시켜 통계적으로 의미있는 수치를 측정하는 테스트 발생시키는 부하는 실제 시스템에 적용될 예상 트래픽이어야 한다 서비스의 평소 트래픽과 최대 트래픽 상황의 성능 테스트 평균 VUser 최대 VUser 부하 테스트의 목표는 애플리케이션이 향후 예상되는 로드를 관리할 수 ​​있도록 데이터베이스, 하드웨어, 네트워크 등과 같은 애플리케이션의 모든 구성 요소에 대한 상한을 결정한다. Stress Test 시스템이 과부하 상태에서 어떻게 작동하는지를 검사하는 테스트 무조건..

DevOps./Infra 2022.12.05

Nginx로 Reverse Proxy 서버 만들기

1. Reverse Proxy 우리의 WAS는 비즈니스 로직만 담당하도록 구성하고 싶어요. TLS와 같은 부수적인 기능으로 애플리케이션에 직접 영향을 주고 싶지 않아요. 그럴 때 중간에 대신 역할을 수행하는 녀석이 필요한데, 여기서는 Reverse Proxy가 그 녀석입니다. Reverse Proxy는 클라이언트로부터의 요청을 받아서(필요하다면 주위에서 처리한 후) 적절한 웹 서버로 요청을 전송합니다. 웹 서버는 요청을 받아서 평소처럼 처리를 하지만, 응답을 클라이언트로 보내지 않고 Reverse Proxy로 반환합니다. 요청을 받은 Reverse Proxy는 그 응답을 클라이언트로 반환합니다. 통상의 Proxy Server는 LAN -> WAN의 요청을 대리로 수행합니다. 가령, 특정 웹 서비스에 접속..

DevOps./Infra 2022.11.21

글로벌 서비스 운영을 위한 API 설계 방법 (feat. Timezone)

글로벌 서비스를 운영하려면 Timezone과 Offset에 대한 개념에 대해 이해가 필요하다. Timezone 타임존은 동일한 로컬 시간을 따르는 지역을 의미하며, 주로 해당 국가에 의해 법적으로 지정된다. 보통 국가별로 각자의 고유한 타임존을 사용하고 있으며, 호주나 미국처럼 면적이 넓은 나라인 경우 지역별로 각기 다른 타임존을 사용하기도 한다. Offset 그리고 경도별로 조정된 시간의 차이를 Offset이라고하는데, 경도에 따라 국가 및 지역을 구분해서 대략적인 Offset으로 통일하고 있다. 서울의 경우 Offset값이 +09:00인데, 즉 UTC +00:00인 영국의 런던시간이 0시일 때에 한국은 9시간이 빠른 오전 9시를 뜻한다. 참고 UTC는 그리니치 평균시(GMT)로 불리기도 하는데, UT..

DST에 대해 알아보자

글로벌 서비스를 운영하면서 DST 관련 이슈가 발생했다. 모니터링 그래프에서 데이터가 밀려나오는 이슈였다. 처음에는 월별 그래프로 보면서 데이터를 비교해보았었는데 정말 엉뚱한 데이터 값이 나오고 있었다. 그래서 일별 그래프를 보게되었고 데이터가 하루 씩 밀려나오는 것을 확인할 수 있었다. 이슈의 원인은 바로 DST 였다. DST(Daylight saving time)는 일광 절약 시간제를 의미하고 시계(표준시)를 한 시간 당겨 생활한다. 예를 들면 8시를 9시로 바꾸고, 2시를 3시로 바꾸는 것이다. 예를 들어 평소에 8시에 출근하던 것을 1시간 늘리니까 늘린 후 8시에 출근하면은 원래 시각으로는 7시에 출근한것으로 결론적으론 1시간 일찍 하루를 시작한 효과가 된다. 이렇게 보면 이해하기 편하다. 일반 ..

[우아한테크캠프 Pro] JPA Hands-on Part 1 정리

해당 글은 우아한 테크캠프 PRO에서 진행된 JPA Hands-on Part 1 강의의 내용을 정리한 내용이다. JPA 도입 배경 JdbcTemlapte, MyBatis는 객체 그래프를 완성하는게 쉽지 않다. Spring Data JDBC는 도메인주도설계 영향을 굉장히 많이 받은 프레임워크다. - 지연로딩, 더티체크 등 영속성과 관련된 기능이 없음 - 무조건 엔티티 save를 호출해야함 JPA - 객체지향 패러다임과 RDB 패러다임을 중간에서 Java Persistence API - 현재는 Jakarta Persistence API - Spring은 JPA의 구현체를 Hibernate 6로 사용 JPA 특징 1. JPA 데이터베이스 스키마 생성 전략 - create, validate, none 등 2. ..

JPA. 2022.11.03