CodeDeploy로 CD 구성하기 With Github Actions, S3, Linux Service
2023. 9. 3. 19:51
Web
노션에서 보기 : https://cabi.oopy.io/b06df004-0449-4aa4-adfc-f15fe2d18f24 개요 이전 글 Github Actions로 CI 구성하기 with Spring Boot, 그리고 EC2로 서버 인스턴스 구성하기 with Spring Boot, Docker를 통해 CI와 서버 인스턴스를 구성해보았다. 이제, CI-CD의 마지막인 CD, 배포 부분을 구성해보려 한다. AWS EC2를 서버 인스턴스로서 사용하고, Github Actions에서도 사용하기 편리한 것으로 보여서 AWS의 CodeDeploy를 이용해서 CD를 구성해보고자 한다. CodeDeploy CodeDeploy는 EC2 인스턴스 등 애플리케이션 배포를 자동화하는 서비스다. CodeDeploy는 서버에서 ..
EC2로 서버 인스턴스 구성하기 with Spring Boot, Docker
2023. 9. 3. 19:49
Web
노션에서 보기 : https://cabi.oopy.io/caf8d5c7-63e9-4a1f-8c06-d1bce46311c5 개요 이전 글(Github Actions로 CI 구성하기 with Spring Boot)을 작성하면서, CI를 구성해보았다. CD에 앞서서, Spring Boot 서버로서 기능하는 인스턴스를 구성해야한다. 현재 진행하고 있는 반려동물 SNS 프로젝트는 국제화를 구현한 상태이다. 이에 따라 늘어날 수 있는 사용자들에 대해서 유연하게 스케일링 할 수 있는 클라우드 환경의 인스턴스를 이용하고자 하였고, AWS의 EC2를 이용하기로 결정했다. EC2 - 서버 인스턴스 Elastic Compute Cloud(EC2)는 AWS 클라우드에서 on-demand인 확장 가능한 컴퓨팅 용량을 제공한다(..
Github Actions로 CI 구성하기 with Spring Boot
2023. 9. 3. 19:44
Web
노션에서 보기 : https://cabi.oopy.io/1022ea8e-7ef4-423d-84cf-94dae980d3e2 개요 반려동물 SNS 프로젝트를 마무리 해가면서 협업에 따른 기존 코드와 새 코드의 지속적인 통합(CI), 그리고 배포(CD)를 위한 파이프라인이 필요해졌다. 직접적으로 Github를 통해 협업을 진행하고 있고, 이에 따라 Github에서 제공하는 무료 서비스인 Github-Actions를 이용해 CI를 구축해보고자 한다. 먼저 CI/CD에 대해서 알아보고, 프로젝트의 CI부터 적용해보려 한다. CI, CD CI/CD (Continuous Integration/Continuous Delivery)는 애플리케이션 개발을 자동화하여 더욱 짧은 주기로 사용자에게 제공하는 방법이다. CI/C..
데이터 캐싱해보기 - Spring Cache와 Caffeine
2023. 8. 14. 16:22
JAVA
개요 프로젝트에서 특정 기간 동안의 국가별 사용자 데이터에 대한 통계를 대시보드로 제공하려고 한다. 이 경우에 꽤 볼륨이 큰 쿼리를 사용하게 되는데, 일정 시간을 기준으로 하는 데이터이기 때문에 매번 사용자가 조회할 때마다 데이터를 전달하는 것보다 고정된 데이터를 주기적으로 업데이트만하고 이를 캐시로 제공하면 좋겠다고 생각했다. 이를 위해 Redis를 얹는 것보다, 로컬 캐싱만으로도 충분히 해결할 수 있는 볼륨이어서 Spring Cache, 그리고 로컬 캐싱에 특화된 캐싱 라이브러리인 Caffeine을 이용하고자 한다. Spring Cache? Spring에서 단순한 추상화(어노테이션)를 통해 캐시를 쉽게 사용할 수 있도록 지원하는 라이브러리다. 선언적인 방식(어노테이션, 무엇을 할지만 적어놓는다)을 통..
iOS 푸시 알림 구현하기 구현편 - Spring, AWS SQS, Lambda, Firebase
2023. 7. 26. 17:49
Web
Notion에서 보기 iOS 푸시 알림 구현하기 구현편 - Spring, AWS SQS, Lambda, Firebase 개요 cabi.oopy.io 개요 이전 글인(iOS 푸시 알림 구현하기 세팅편 - AWS SQS, Lambda, Firebase )에서 SQS와 Lambda를 이용한 푸시 알림 부분까지는 세팅, 구현이 되었다. 이제 WAS에서 AWS 인스턴스와 관련한 세팅을 완료하고, 원하는 때에 원하는 방식으로 내부 앱 알림을 사용할 수 있도록 구현해야한다. 주의사항 : 제 개인적인 생각을 통한 구현으로, 항상 올바른 구현이나 정답이 아님을 인지해주세요! Spring으로 AWS 인스턴스 연결하기 먼저 내부적으로 AWS와 관련한 설정을 통해, SQS를 사용할 수 있도 개요 현재 구현된 구조 이전 글인(..
iOS 푸시 알림 구현하기 세팅편 - AWS SQS, Lambda, Firebase
2023. 7. 26. 17:42
Web
Notion에서 보기 iOS 푸시 알림 구현하기 세팅편 - AWS SQS, Lambda, Firebase 개요 cabi.oopy.io 개요 이 글은 백엔드의 입장에서 작성되었습니다. iOS를 이용한 앱의 Java 백엔드를 담당하게 되면서, 앱 내 알림 및 Push 알림 기능 구현을 맡게 되었다. 이를 위해 DB 알림 관리와 Push 알림 전송 관리 구현이 필요했다. 방법들을 찾아보는 도중, AWS의 SQS, Lambda, 그리고 Google의 Firebase를 이용하면 무료로 이 알림들을 구현할 수 있음을 알게 되었다. iOS 앱의 백엔드 서버로써 DB 알림과 Push 알림을 구현하기 위한 나의 삽질기를 기록하려고 한다. AWS SQS, Lambda? **SQS(Simple Queue Service)**..
예제로 QueryDSL 사용해보기
2023. 7. 19. 22:07
JAVA
노션에서 보기 이전 글 ORM - Hibernate - JPA - QueryDSL을 알아보자 QueryDSL에 대해서 어떤 것인지, 어떠한 구조를 가지고 ORM이 진행되는지를 알아보았다. 작은 서비스를 가정하고, 구현한 상태에서 QueryDSL을 적용하여 간단히 사용해보자. 셋업 Gradle 의존성과 세팅 plugins { id 'com.ewerk.gradle.plugins.querydsl' version '1.0.10' // Q 클래스 생성 플러그인 // ... } def querydslDir = "$buildDir/generated/querydsl" // 생성된 Q 클래스가 저장될 위치를 정의한다. // queryDSL 자체에 대한 config querydsl { jpa = true // jpa = ..
ORM - Hibernate - JPA - QueryDSL을 알아보자
2023. 7. 19. 22:02
JAVA
노션으로 보기 개요 이전 느린 응답 26배 빠르게 개선해보기를 겪으면서, 복잡한 쿼리들을 메서드 체이닝을 이용해서 가져올 수 있었다면(QueryDSL을 썼다면) 이런 느린 쿼리 말고도 연관관계가 깊은 복잡한 쿼리들도 단번에 가져올 수 있지 않을까하는 생각이 들었다. 이번 글에서는 ORM과 JPA에 대해서 간단히 알아보고, QueryDSL의 간단한 적용과 예시를 구현해보고자 한다. 이를 통해서 추후에 직접 서비스에 적용해서 위에서 일어났던 휴먼 에러와 몰라서 생기는 불필요한 호출들을 줄일 수 있으면 좋겠다! ORM부터 Spring Data JPA까지 우선 QueryDSL로 넘어가기 전에, 간단하게 ORM과 Spring Data JPA에 대해서 짚고 가보자. ORM(Object-Relational-Mappi..
느린 응답 26배 빠르게 개선해보기
2023. 7. 16. 12:56
JAVA
노션으로 읽기 -> https://cabi.oopy.io/788c5b3f-32a2-4154-a1d4-d052408f245c 느린 응답 26배 빠르게 개선해보기 개요 cabi.oopy.io 개요 스프링으로 포팅하면서 이전보다 느리게 오는 응답에 대해서 문제점을 분석하고, 이를 해결하기 위해서 DB와 백엔드 코드에서 어떻게 해결할 수 있을지에 대해서 분석해보려고 한다. 겪고 있는 문제 서비스의 웹 뷰에서 사용자가 로그인 후 가장 먼저 하게 되는 행동은 특정 층의 사물함 전체 조회다. 기존 Nest.js 백엔드에서는 100회 평균 약 80ms로 응답속도가 빨랐는데, 스프링 포팅 이후에 해당 호출이 100회 평균 약 520ms로 급격히 상승했다😱 문제 진단 응답 속도 측정해보기 (Postman Runner) 쿼..
테스트를 알아보자 With 단위, 통합, E2E
2023. 7. 6. 16:24
JAVA
OOPY에서 보시면 더욱 편하게 보실 수 있습니다! 테스트에 대해 알아보자 With 단위, 통합, E2E 개요 cabi.oopy.io 개요 새롭게 Java Spring으로 프로젝트 코드를 작성하면서, 테스트가 왜 필요한지, 어떻게 작성해야 하는지 궁금해졌다. TDD(Test-Driven Development, 테스트 주도 개발)라는 말이 있을 정도로 프로그래밍에서 테스트는 중요한 것 같은데 왜인지, 어떤게 있는지 한번 알아보고자 한다. 이 글에서 다루는 테스트는 소프트웨어 애플리케이션의 테스트이다. 테스트란? 프로그래밍에서 테스트(Test)는 개발한 소프트웨어의 동작을 검증하는 과정을 말한다. 테스트는 프로그램의 요구사항(동작)을 명세하고, 품질을 확보하고, 버그를 찾아내고 수정함으로써 소프트웨어의 신뢰..