분류 전체보기
-
redis 캐시 적용기 ( 부하테스트를 곁들인... )실전 개발해보기 2024. 3. 21. 20:37
처음에 UI가 때문에 부하테스트를 nGrinder로 하다가 Jmeter도 써봤는데 인텔리제이랑 UI가 많이 비슷해서 인텔리제이로 개발하다가 , Jmeter 쓰다가 번갈아 하기 좋은 것 같다. 아직은 내 레벨에선 Jmeter 부하테스트 기능상의 불편함도 찾지 못했다! 본론 부하테스트를 진행해보며 redis를 이용한 캐시의 우수성을 직접 확인해보려한다 상황은 다음과 같다. 내가 개발하는 프로젝트의 메인 페이지에서 비 로그인 유저에게는 좋아요 많은 순으로 이미지(url,제목 정보)를 반환한다. 우리 서비스에 대한 요청이 메인페이지에서 집중된다는 점을 고려하면 메인 페이지에 대한 효율성 고민이 필요하다고 생각했다. 일차적으로, 페이징 처리(무한 스크롤)가 되어있어 부담을 줄였지만.. 더 줄여보자..!! 고민 1..
-
Service에서 Service를 참조해야만하나? (with Facade 패턴)실전 개발해보기 2024. 2. 4. 11:26
이번 팀플을 해볼 때 내 도메인을 다른 도메인(팀원이)에서 가져다 쓸 것을 크게 고려하지 않고, 내 도메인에 대한 기능만 충실하면 된다고 착각해서, Presentation(Controller) | Application(Service) | (Domain) | Infrastructure(Repository) 구조로 짰다. 쿠폰은 내가 다른 Service 을 가져다 쓸 부분은 없고 도메인 과 레포지토리 정도였다. 그러나 다른 도메인의 Service에서는 Coupon에 대한 기능이 필요했다. 다 짜고 보니까 다른 ProductService에서 CouponService 에 있는 기능이 필요했다. 그래서 몇가지 해결법을 정리해보았는데, 해결법중 뭐가 정답이다! 라는건 없다고 생각한다. 각 방법끼리의 트레이드 오프..
-
CI/CD 정리 3편 - Github Actions 를 통해 CD 실습해보기백엔드 공부 2024. 1. 30. 09:00
바로 CD 를 작성해보자! ci랑 cd를 같이 작성하는 사람들도 있는데, 우린 분리해서 작성했다. CD 작성 전 , 필요한 것 - Docker 회원 가입 및 설치 - Aws 회원 가입 및 ec2 서버 열기 - ec2 서버에서 Docker 설치 cd 파일은 저 파이프라인 동작 과정을 적는 것이다.(db부분 제외) 팀프로젝트에선 main - develop - feature branch로 나눠서 작업을 했다. feature에서 분업 후, develop 에서 데이터를 합쳤기 때문에 CI가 일어나는 부분은 feature - develop 였다. CD (배포하는 과정)는 develop -> main으로 push할 때만 작동하도록 작성했다. name: Java CD with Gradle in smRt store on..
-
CI/CD 정리 2편 - Github Actions 를 통해 CI 실습해보기백엔드 공부 2024. 1. 29. 09:00
이제 CI 를 직접 작성해볼 차례다! CI 툴을 Github Actions로 선택한 이유 팀 프로젝트 시작 전 젠킨스와 Github Actions 두개를 놓고 고민했었다. 초기 세팅을 할 때 팀원 중 한 명만 CI/CD 경험이 있는 상태였다. 젠킨스가 UI도 따로 있고, CI 테스트 과정에서 성능도 좀 더 빠르고 참고 문서가 많았지만 결정적으로 초기 세팅 난이도가 비교적 높았기 때문에, 우리가 1달동안 빠르게 개발해야하는 상황에서 젠킨스는 굳이? 라는 선택지였다. Github Actions는 오래되지 않아서 참고 문서가 많지는 않았지만 툴 자체 진입장벽이 낮아서 쉽게 접근할 수 있을 것 같았다. CI 파일 작성하기 프로젝트 레포지토리 -> Actions -> Java with Gradle Java wit..
-
CI/CD 정리 1편 - CI/CD의 필요성(이론)백엔드 공부 2024. 1. 28. 11:14
처음에 CICD 에 대한 플로우를 이해하기가 어려웠지만 직접 해보면서 조금씩 이해가 가기 시작했고 이 글을 읽고 조금이나마 도움이 되길 바라면서 글을 써본다. 우리 프로젝트에서 진행했고, 직접 만든 CI CD 플로우다. CI CD과정에서 쓰는 기술이 팀마다 모두 다르기도 하지만, 플로우를 나타내는 방식이 정해져있지 않아서 설령 같은 기술을 쓰더라도 다르게 표현 되는 것 때문에 다른 팀들의 플로우를 이해하기 조금 어려웠다. 나는 CI과정과 CD 과정을 나눠서 설명할 것인데, 이 두 과정이 왜 필요한지에 대해 먼저 정리하고자 한다. CI ( Continuous Integration ) 가 필요한 이유 개발을 할 때 우리는 일의 효율성을 위해 (git기준으로) branch 를 나눠서 작업하게 된다. 그렇게 분..
-
백엔드 데브코스 회고 - 2023 10월부터 2024 1월까지회고록/개발 인생 2024. 1. 27. 04:43
회고록 썸네일에 뭐 쓸까 하다가 문득 새삼 리쌍 8집 '행복을 찾아서' 라는 노래가 생각났다. https://www.youtube.com/watch?v=le0GI8FtB2o 데브코스에서의 New팀 ( 팀 배정~ 2차 팀 프로젝트 전) Pre 팀을 떠나보내고..흑흑 새롭게 New팀을 맞이했다. 발표 스터디 팀 배정 이후 얼마 안지나서 발표 스터디를 한번 진행했었다. 아직 유튜브에 올라가진 않았지만 -> 지금은 올라갔다 ! https://www.youtube.com/watch?v=_n9zKCs5yMs&list=LL&index=4&t=1s 이 때 Index에 대해 공부하면서 이후에도 db 아키텍처 공부한게 참 도움이 많이 되는 것 같다. 발표는 하면 할수록 는다고 생각은 하지만, 여전히 어렵고 힘들다 그럼에도..
-
동시성 문제 해결하기(1) - DB Lock실전 개발해보기 2024. 1. 23. 16:05
팀프로젝트 때 내가 맡았던 쿠폰 도메인... 쿠폰 도메인에서 가장 중요한 파트라하면 단연 쿠폰을 다운로드 하는 기능이 되겠다. 플젝 당시에는 락 관련 테스트 코드짜다가 에러가 너무 많이 나서 일단 Pessimistic Lock으로 구현해놓고 플젝이 끝난 지금, 다시 테스트 코드를 짜서 이것저것 비교해보며 공부해보려고 한다. 내 개발환경은 언어 : Java 프레임워크 : Springboot DB: Mysql Jpa(hibernate) 정도를 사용하고 있다. DB에서 테이블/레코드에 쓰는 락으로 대표적으로 Exclusive lock /Shared lock 가 있다. (여기서는 간단하게 정리) Exclusive lock (배타적 잠금) 쓰기 잠금(Write lock)이라고도 불린다. 어떤 트랜잭션에서 데이터를..
-
DB단에서 어느 수준의 쿼리까지 작성해야할까생각해보기 2024. 1. 22. 12:01
최근 DB 동시성과 효율성에 대해 공부하다보니 DB에서 생각보다 처리할수 있는 쿼리가 많음을 깨닫고 있다. queryDsl의 기능은 그 상상 이상이고... 근본적인 질문이 하나 생겼다. 그럼 DB에 날릴 쿼리는 어느 수준까지 작성해야하지? 물론 어플리케이션 코드를 깔끔하게 하기 위해 쿼리를 많이 가공할 수 있는 상황이어도 과연 그게 맞을까?? DB가 있는 이유가 뭐지? DB를 통해 쿼리를 많이 가공해서 쓰면 좋은 점은? 그 때 Trade off는? 쿼리 최적화랑 관련된 내용이긴한데... 이 글에선 해당 주제에 대해서만 간단하게 생각해보자 1. DB 단에서 쿼리로 작성하게 될 때 이점 우선 DB와 애플리케이션 사이에서 데이터가 왔다갔다 할 때 비용이 크다. 그렇기 때문에 쿼리 최적화를 하면서 상황에 필요한..