극락
-
[극락알콜-3] 창동 극락 소고기, 북새통극락알콜 2023. 12. 4. 20:30
요약 - 극락지수: 🍺🍺🍺🍺🍺 - 가성비 소고기 맛집 (서브 메뉴도 극락!!) - 2인 5만원이면, 매우 배부름 (술 조금 달리면 6만원??) - 아재감성 굳굳굳굳!~! 오늘 소개할 맛집은 도봉구 창동에 위치한 북새통이라는 곳이다. 여기는 리얼 극락 맛도리 소고기 구이집이다. (진짜 미친 극락이다.) 주메뉴인 고기들의 가격도 가성비며, 사이드 메뉴도 아주 미친 극락이다. 정말 저렴한데 맛나다. 꼭 가야한다. 먼저, 극락 메뉴를 보자 웨이팅이 있을 정도로 이미 도봉구 창동 분들에게는 널리 알려진 가게다. 그러므로 더이상 알려지는 것은 나에게는 매우 좋지 않다. (정말 맛도리) 가격부터 극락이다. 정말 가성비 미침 자리에 앉으면, 기본 반찬을 가져다 주신다. 맛나다. (일단 여기에 한잔 한다.) 여기까지가 ..
-
springboot v3.x에서 swagger v3 설정법극락코딩 2023. 11. 27. 18:17
SpringBoot v3.x로 올리면서, swagger3 적용 방식이 조금 달라졌다. 1주간 삽질한 것을 기록하자. springboot v3.x로 올려야 되는 상황이 발생했다. 지금까지 2.7.x만 사용하다가...3.x로 올리려니 겁이 났다. 어디서 에러가 터질까.. 어디서 장애가 날까.. 그중에서 가장 나를 아프게 한 건 Swagger Setup이다. 일단, springboot v2.x에서 사용했던 셋업은 다음과 같이 진행했다. object DependecyVersion { const val SPRINGDOC_VERSION = "1.7.0" const val JAVADOC_SCRIBE_VERSION = "0.15.0" } dependecy { implementation("org.springdoc:spr..
-
spring version up을 진행할때 참고하기극락코딩 2023. 11. 6. 21:59
SpringBoot Project의 버전업을 진행하는데 있어, 참고하면 좋은 방법에 대해 소개 문제발생 다른 repo를 보며, 버전업을 진행했는데.. 잘 알지 못하고 진행하다보니.. 이상한 버전들이 낑겨있는 문제가 발생했다. 그러면, 어떤 것을 보고 버전업을 진행해야 할까? Default가 짱.! spring starter를 가면, 내가 원하는 사양에 맞추어 셋업을 하고, 스프링에 default로 어떤 버전을 가져갔는지 확인 가능하다. 여기서 내가 원하는 셋업을 선택하고 하단의 Explore을 클릭하면, spring이 default로 가져가는 build.gradle의 version setup을 확인할 수 있다. 플러그인, task 등 spring에서 default로 어떤 셋업을 진행하는지 확인할 수 있다..
-
[극락알콜-2] 영등포역 극락 삼겹살, 영등포정육식당극락알콜 2023. 10. 22. 23:26
요약 - 극락지수: 🍺🍺🍺🍺 - 가성비 삼겹살 맛집 (서브 메뉴도 낫배드!) - 2인 5만원이면, 매우 배부름 - 아재감성 굳 요즘 고기(삼겹살) 먹을려면, 2인 기준으로 최소 4만원 이상은 지갑을 열어야 한다. 물론, 술을 포함하면 더 많은 돈을 쓸 것이다. 오늘 소개할 식당은 2인 기준, 아주아주 배터지게 먹어도 max 5만원인 식당이다. 영등포역 6번 출구에서 조금 내려오다 보면, 정육식당을 찾을 수 있다. 앞에 나이트 클럽이 있어서, 그것만 기억하면 금방 찾음 개꿀! 세종에서 다른 친구의 업무를 도와주고 올라온 친구와 함께 먹었다. 그 친구가 본인의 뒷 모습을 찍어서 올려달라해서 첨부한다. 기본찬은 다음과 같다. 이정도면 극락알콜 가능하다. 절임 반찬에 한잔~ 김치에 한잔! 하다보니 소주 반병을..
-
[극락알콜-1] 신도림역 2번 출구 닭도리탕 맛집, 신도림닭집극락알콜 2023. 10. 22. 14:14
요약 - 극락지수: 🍺🍺🍺🍺 - 걸죽해서 소주와 매우 잘어울리는 닭도리탕 - 2인 5만원이면, 매우 배부름 - 아재감성 굳 신도림역 2번 출구는 친구들과 자주 가는 곳이다. (모두 사는 곳이 다르다 보니.. 중간 지점이 신도림이어서.. 자주 간다.) 최근에 새로운 맛집을 찾기 위해 이곳저곳 방황하며 걷다가, 빛바랜 식당을 보게 되었다. 그곳은 바로, 신도림닭집.. 일단, 간판부터 맛집임을 보여주고 있다. 친구와 걷다, 여기서 바로 발걸음 멈추고, 그대로 들어갔다... 여기가 바로 극락 메뉴는 담으과 같았다. 주 메뉴는 닭도리탕, 닭볶음, 닭내장탕이다. 어떤 걸 먹을까 고민하다가, 사장님께 여쭤보니 닭도리탕이 더 맛있다고 하셔서, 바로 주문했다. (with 알콜) 반찬이 나왔는데, 이거 맛도리다. 어디서 ..
-
API Latency를 줄이는 방법 (Part. 2)카테고리 없음 2023. 9. 3. 18:13
API의 응답속도 및 지연에 민감한 서비스인 경우, 어떤 방식으로 latency를 줄일 수 있을까? 이전 게시글에서는 Network IO, Cpu Io 등 Test를 위해 IO 발생 로직들을 추가한 API를 만들었다. 그리고 Jmeter를 통한 테스트 방법에 대한 안내를 진행했다. 이번에는 이전에 만든 API의 Latency를 낮추기 위해 CompletableFuture와 Async를 사용해보겠다. TestController에 V2 API를 추가한다. /** with CompletableFuture and Async */ @GetMapping("/api/ral/v2/test") fun getTestV2( request: TestRequest ) = testV2Service.getTestV2(request..
-
API Latency를 줄이는 방법 (Part. 1)극락코딩 2023. 8. 29. 23:43
API의 응답속도 및 지연에 민감한 서비스인 경우, 어떤 방식으로 latency를 줄일 수 있을까? 이전 게시글에서는 기본적인 Project Setup을 진행했다. 이번에는 아래의 상황이 적용된 API를 만들어 본다. 해당 API는 TPS 500이 넘는다고 가정한다. (그 만큼 Call이 많은 서비스) 해당 서비스는 다수의 쿼리를 조회하고, Redis 및 Client 호출이 많다. (Wrapping API라고 생각하자) 해당 서비스는 에러가 발생하더라도, 이를 방어할 수 있는 로직이 필요하다. (에러 발생보다는, 로그를 남기고 넘어가는 방향으로 진행) 위의 조건을 맞추기 위해, 지금 만드는 API에서는 다음과 같은 IO 발생 로직들을 추가할 것이다. 1. Database 조회 4번 2. Redis 조회 ..
-
API Latency를 줄이는 방법 (Part. 0)극락코딩 2023. 8. 28. 20:13
API의 응답속도 및 지연에 민감한 서비스인 경우, 어떤 방식으로 latency를 줄일 수 있을까? 최근에 API의 latency가 민감한 서비스를 개발하게 되었다. 사용자 경험상, 아무리 늦더라도 60~80ms안에는 API의 응답을 받아야 했다. 그렇다면, latency를 줄이기 위한 방법으로는 무엇이 있을까? 일단, 몇가지 상황을 제시한다. 해당 API는 TPS 500이 넘는다고 가정한다. (그 만큼 Call이 많은 서비스) 해당 서비스는 다수의 쿼리를 조회하고, Redis 및 Client 호출이 많다. (Wrapping API라고 생각하자) 해당 서비스는 에러가 발생하더라도, 이를 방어할 수 있는 로직이 필요하다. (에러 발생보다는, 로그를 남기고 넘어가는 방향으로 진행) 그럼, Project Se..
-
Slack Message 발송극락코딩 2023. 8. 27. 17:35
이번에는 Slack에 Message를 발송하는 방법에 대해 정리하려고 한다. 매우 쉽고, 30분안에 만들 수 있다. Spring + Kotlin 기반으로... 가장 먼저 프로젝트 셋업 build.gradle import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { val kotlinVersion = "1.6.21" id("org.springframework.boot") version "2.7.6" id("io.spring.dependency-management") version "1.0.14.RELEASE" kotlin("jvm") version kotlinVersion kotlin("plugin.spring") version kotlinVers..
-
@Transactional vs TransactionTemplate극락코딩 2023. 8. 22. 00:53
스프링에서 트랜잭션을 다루는 2가지 방법이 있다. @Transactional을 사용하는 선언적 트랜잭션과 TransactionTemplate을 사용하는 프로그래밍적 트랜잭션이다. 2가지 방법에 대해 간단하게 정리하면, 다음과 같다. @Transactional 어노테이션 기반으로 method에 트랜잭션을 거는 방법 proxy로 원래 객체를 감싸는데, 그 이유는 실제 메서드의 가장 앞단과 가장 뒤에 트랜잭션의 begin과 commit으로 감싸기 위함 TransactionInterceptor.class @Override @Nullable public Object invoke(MethodInvocation invocation) throws Throwable { // Work out the target class..