전체 글 148

[RabbitMQ] AMQP에 대해

서론입사 후 처음 맡게된 업무는 회사에서 제공하는 OpenAPI 관련 업무였다.관련해서 MQ를 처음 사용해보게 됐는데, 회사에선 RabbitMQ를 사용하고 있었다.아직 업무 투입 전이기 때문에, 빠르게 학습해보도록 하려고 한다.RabbitMQ를 공부하다보니 자연스럽게 AMQP라는 용어도 나왔는데, 이게 뭔지 궁금해서 한 번 알아봤다.참고https://preamtree.tistory.com/172 Spring AMQP 맛보기 - 1. AMQP 개념부제: RabbitMQ Spring 연동, RabbitMQ 연동 이번 시리즈에서는 간단한 Spring AMQP 예제를 소개한다. 예제를 시작하기 전에 이번 포스팅에서는 AMQP라는 것에 대해 소개할 것이다. 1. AMQP 정의 Advanced Message Qup..

Backend/RabbitMQ 2024.08.14

[DB] 조회 시 트랜잭션을 걸어야 하는 이유? (Feat. 트랜잭션 격리수준)

서론면접에서 아래와 같은 이야기를 주고 받았다. (요즘 면접을 많이 다니기도 하고, 면접을 하면서 고민해볼 거리가 많이 나오는 것 같다.)(프로젝트 이야기와 조회 로직에 트랜잭션을 붙이지 않았다는 이야기를 했음)면접관 : 몇 가지 데이터 구조에 따라 다르긴 하겠지만, 조회 로직에 트랜잭션을 걸지 않았을 때 문제가 발생할 수 있을 것 같은데, 어떤 문제가 발생할 수 있을지 생각해보시겠어요?트랜잭션은 업데이트에만 적용해놨었는데, 관련된 질문이 들어왔었다. 트랜잭션은 보통 동시성 이슈와 밀접한 연관이 있기 때문인데, 해당 질문엔 계좌 잔액 조회를 예시로 들어서 설명했다.그러나 면접관이 원하는 대답은 아니었던 것 같았다. 조회엔 걸지 않는게 일반적인 걸로 알고있었는데.. 잘못된 거였구나. 라는 것을 깨닫고, 관..

Backend/DB 2024.06.26

[Java] 자바 가상스레드의 정의와 원리 파헤치기

서론모 회사에서 면접 도중, 가상 스레드에 대한 질문이 들어왔었다. 프로젝트엔 아직 사용해보지 않았고, JDK 21이 현업에서 잘 사용되지 않는 점(정확히는 나온지 얼마 안되서 사용되지 않는다. 마이그레이션이 필요한 곳은 하는듯) 등을 이유로 따로 공부를 하진 않았기에, 간략하게나마 알고있는 내용으로 답변했었다.JDK 17이 나왔을 때와 달리 지금은 필드에서도 17을 쓰는 회사가 꽤 많이 보인다. 이처럼 상위 버전이 출시되고 시간이 지나면 자연스럽게 현업에 녹아들게 되므로, 빠르게 체득해야 시장에서 경쟁력 있는 개발자로 성장할 수 있을 것 같다.본 포스팅에선 이러한 배경을 토대로 자바 가상스레드와, 공부를 진행하며 내가 궁금했던 점들을 꼬리질문 형식으로 되물어보도록 하겠다.참고https://techblo..

[Oracle] 오라클 시퀀스가 동시성 이슈를 보장해주는 이유

서론이전 회사에서 오라클 시퀀스를 활용해 선착순 이벤트 처리를 한 경험에 대해 복기하던 도중, 오라클 시퀀스가 어떻게 그걸 보장해주는지가 궁금해졌다.오라클을 사용하지 않는다면 Redis를 사용해서 동시성 이슈를 제어하거나, 자바 단에서 thread, callback 등을 통해서 제어하는 방식이 있을텐데, 오라클에서 제공하는 기능을 활용해 훨씬 간단하게 업무를 처리한 기억이 있다.아마 이런식으로 업무처리하신 분이 나 말고도 있을 것 같은데, 그게 어떻게 가능한건지 알아보도록 하자. 간단한 포스팅이니 이해가 쉬울듯.시퀀스가 뭔지, 이런것들에 대한 내용은 다른 블로그를 참고하도록 하자.참고https://velog.io/@norighthere/Oracle-%EC%98%A4%EB%9D%BC%ED%81%B4-%EC..

Backend/DB 2024.06.11

[Software Design] 헥사고날 아키텍처(Hexagonal Architecture) 톺아보기

서론모 회사에서 기술면접을 진행하는 도중, 헥사고날 아키텍처에 대해 알고있냐는 질문을 받았다.대충 어떤 모양새인지 흐릿하게는 알고 있었는데, 괜히 대답했다가 이도저도 아닌 대답을 내놓을 것 같아서 모른다고 했음(...)사실 헥사고날 아키텍처나 TDD는 실무에 적용하기 어렵다는 이야기를 많이 들었어서, 그런 내용에 집중하기보다 기본기를 쌓는게 더 중요하다고 생각하는데, 그래도 기본적인 이론과 장단점에 대해서는 파악을 하는 것이 좋을 것 같다.이론적인 부분은 훨씬 좋은 아티클과 글이 차고 넘치니, 이론에 대해 의미없이 포스팅 하는 것보단 스스로 생각해본 포스팅이라고 이해하시면 편하시겠다.참고https://tech.osci.kr/hexagonal-architecture/ 헥사고날 아키텍처(Hexagonal A..

[Java] CompletableFuture의 개념과 동작원리, Thread, Future와의 비교

서론모 회사에서 라이브 코딩테스트를 진행하며 스레드(혹은 비동기 태스크)를 활용한 비동기 프로그램 코딩을 진행했다.검색 허용이 되서, 내가 알고있던 Thread를 쓸까 하다가 너무 기본적인 예제같은 느낌이 들어서 더 좋은 방법이 있나 찾아봤고, CompletableFuture 라는것에 대해 알게되었다.기존 Thread랑 무슨 차이가 있는지, CompletableFuture는 뭔지 알아보도록 하자.참고https://stackoverflow.com/questions/49865210/thread-vs-completablefuture {do something}); thread.start(); VS CompletableFuture..." data-og-host="stackoverflow.com" data-og-s..

[Spring Security] SecurityContextHolder, SecurityContext, Authentication

서론시큐리티를 공부하다가 문득 이런 생각이 들었다.SecurityContextHolder, SecurityContext, Authentication 는 왜 나눠놓은걸까?그냥 하나로 퉁치면 되는거 아닐까?그에 대한 고민과 해답을 본 포스팅에 적어보고자 한다.참고https://docs.spring.io/spring-security/reference/servlet/authentication/architecture.html#servlet-authentication-securitycontextholder Servlet Authentication Architecture :: Spring SecurityProviderManager is the most commonly used implementation of Auth..

[AWS Summit Seoul 2024] AWS 써밋 후기

서론커널360 과정이 끝나고 취준 활동을 열심히 하는 요즘... 3월쯤에 커널360 멘토님께서 알려주신 컨퍼런스의 행사일이 당도했다.모처럼 크루원들 얼굴도 보고 근황도 궁금하고, 프로젝트를 하면서 AWS 인프라에 관심이 많이 생겨서 가보기로 했다2일차에 참여했다!본론오픈런하러 가즈아점심을 준대서 돈없는 백수라... 이왕 가는거 점심좀 챙기려고 오픈런을 뛰었다. 근데 너무 일찍 온 것 같았다. 지루하더라.. 약 한시간 반 가량을 하릴없이 기다렸다.키노트 발표는 대강당같은 곳에서 진행했다. 키노트 이후로도 이곳은 강연장으로 사용되었음. 아니 근데 스피커 소리가 너무 빵빵하더라... 귀가 아플 지경이었다 ㅠㅠ9시 30분부터 발표 예정이었다. 그 전에 계속 대기도 하고, 전날 커피때문에 잠을 못자서 모자란 잠을..

DevOps/AWS 2024.05.20

[Kernel360] 커널인의 코드리뷰 리뷰하기

서론 Kernel360에서 파이널 프로젝트가 마무리 되었습니다. 정규 과정인 프로젝트 기간은 마무리가 되었는데요, 저희 팀 포함 총 5개의 서비스를 개발한 뜻깊은 시간이었습니다. 본 포스팅에선 파이널 프로젝트에서 커널인들의 코드리뷰가 어떻게 진행되었는지 리뷰해보는 시간을 가져보도록 하겠습니다. 본론 1팀, JDON jdon은 원티드, 점핏, 사람인 등의 여러 채용 사이트의 정보를 기술 스택별로 한 눈에 볼 수 있는 서비스입니다. 또한 현직자와 커피챗도 신청할 수 있는 기능을 제공하고 있습니다. [서비스 링크] 궁금한 부분에 대해서 적극적인 토론이 일어나는 것을 볼 수 있었습니다. 특히 본인이 의문점을 갖는 부분에서 링크 첨부로 좀 더 직관적으로 상대가 이해하게끔 유도해주는 것이 인상깊네요. 다른 PR도 ..

일상/Kernel360 2024.04.08

[Kernel360] 생산성과 리팩토링에 대한 고찰

서론Kernel360에서 파이널 프로젝트로 클라이밍 커뮤니티 앱, 오루리 프로젝트를 진행 중입니다.저희 팀을 포함한 총 5개의 팀이 4개월이라는 긴 프로젝트 기간의 마무리 단계에 있는데요.프로젝트를 진행할수록 생산성과 코드의 품질, 생산성을 향상시키는 리팩토링에 대해 정말 많은 고민을 했던 것 같습니다.특정 로직에 대해 리팩토링을 할지.. 갈아엎을지.. 그렇게 하기엔 너무 볼륨이 커서 묻어두고 다른 작업을 할지..본 포스팅에선 나름대로 고찰했던 내용들에 대해 써내려보고자 합니다.본론작업의 방향성에 대해 생각해보기사실 정답이 정해져 있는 논제이긴 합니다. 당연히 둘 다 해야죠.문제는 우리에게 주어진 시간은 무한한 자원이 아니라는 것입니다. 그렇기 때문에 작업을 하기 이전에, 방향성에 대해 심사숙고해보면 ..

일상/Kernel360 2024.04.08