업무를 하는 도중, 원자적으로 작업이 되어야만 하는 즉, 트랜잭션이 꼭 필요한 비즈니스 로직이 있었다.@Transactional 어노테이션을 사용해서 간편하게 트랜잭션 작업을 하고 싶은데.. 여러 블로그에 있는 레퍼런스대로 진행하려 했는데 도통 동작하지 않는 것이었다.여기에서 작업이 지연되면 앞으로 진행해야 될 업무 일정에 차질이 생길 것 같아 주말에 시간을 내서 이 문제에 대해 꼭 해결을 하고 싶었다. 어디가 문제인지 아예 감이 안잡히는 상황이라 처음부터 하나씩 문제가 될 만한 것들을 수정해가며 소거해볼 예정이다.사용한 기술Spring Boot 3.2.xCoroutinespring-boot-starter-data-mongodb-reactiveReplica-setting MongoDB 스프링과 Mongo..
타입 시스템이란? 타입 시스템은 GraphQL에서 데이터의 구조를 명확하게 정의해서 서버와 클라이언트 간의 데이터 전달을 일관되고 정확하게 해주는 중요한 개념이다. GraphQL의 타입 시스템은 다음과 같은 요소로 구성된다.Scalar TypeInt, Float, String, Boolean, IDEnum Type미리 정의된 값의 집합을 가지는 타입Object Type여러 필드를 포함하는 복합 타입Input TypeMutation 인수로 사용되는 타입Interface여러 객체 타입이 공통으로 가져야 하는 필드를 정의Union Type여러 객체 타입 중 하나를 반환할 수 있는 타입 타입 시스템은 이런 요소들을 통해 데이터의 구조를 명확하게 정의한다.그리고 이를 통해 인스트로스펙션과 AST기능을 제공할 수 ..
이번엔 GraphQL의 서버 구성요소에 대해 알아보자. GraphQL의 구성요소GraphQL의 구성요소는 크게 4가지로 나눌 수 있다.스키마미들웨어리졸버ASTGraphQL의 구성요소 - Schema먼저 스키마에 대해 알아보자. 스키마는 GraphQL 서버의 데이터 구조와 API 형태를 정의한다.이러한 스키마는 다시 4가지 구성요소로 나눌 수 있는데, 이 요소들을 스키마 정의 언어(SDL)를 통해 스키마로 작성하고 작성된 스키마는 각 타입의 필드와 관계가 어떻게 되는지 명확하게 규정된다. 그리고 이렇게 작성된 스키마는 GraphQL의 인트로스펙션 기능을 통해 Altair나 GraphQL 보이저 같은 도구에서 문서화나 시각화가 된다. 클라이언트에서는 이러한 특징 덕분에 쉽게 다룰 수 있다. GraphQL..
초기 페이스북 앱은 HTML 웹사이트를 웹뷰로 감싼 형태로 개발되었다.그러나 2012년 트래픽 증가와 함께 이런 구조가 성능 저하와 빈번한 크래쉬를 일으키는 문제가 발생했었다. 이에 페이스북 개발팀은 네이티브 앱으로 전환을 시도하게 되었고, 데이터를 HTML 대신 API로 전송해야 했다.하지만 기존의 REST API는 기대만큼의 성능을 보이지 못했고, 이러한 과정에서 페이스북은 모든 기능과 데이터를 다룰수 있고 사용하기 쉬우며 높은 성능을 가진 Data Fetching API를 필요로 했다.이러한 조건을 충족하기 위해 2012년에 개발된 기술이 바로 GraphQL이다. 그리고 3년 뒤인 2015년 GraphQL은 오픈소스화 되었다. GraphQL이란? GraphQL은 API를 위한 쿼리 언어로 여기에서 ..
MySQL과 MongoDB의 특징 비교 MySQL의 특징타입 : 관계형 데이터베이스데이터 저장 형식 : 고정된 행과 열 기반의 테이블쿼리 : SQL스키마 : 정적 스키마 (미리 정의된 데이터 구조에 따라 데이터 저장)외래키 지원 O트랜잭션의 격리수준 : default - repeatable_read(중간정도의 격리수준)기본키 자동설정 X기본 스토리지 엔진 : innoDB 엔진수평적 확장(스케일 아웃)이 어렵다. (숙련도에 따라 다를 수 있음) MongoDB의 특징타입 : NoSQL 데이터베이스데이터 저장 형식 : Bson(Binary Json) - Json 스타일의 도큐먼트 형식(nested된 타입을 저장할 때 강점)쿼리 : MQL - Json 형식으로 쿼리스키마 : 동적 스키마 (다양한 데이터 타입 및..
첫 회사와 이직 결심2023년 5월 1일, 나는 판교의 회사에서 첫 개발자로서의 커리어를 시작했다.회사에 가면 많은 것을 배우고 성장할 수 있을 것이라 매우 기대했다. 하지만 첫 개발자 커리어를 시작하자마자 마주한 문제는 바로 사수의 부재였다.입사하자마자 사내 신규 서비스 개발에 들어가게 되었는데, BE팀은 전부 신입으로 구성되어있었기 때문에 여러 측면에서 너무나도 불확실했다. (입사하자마자 2주만에 사수분이 퇴사를 해버렸다..)사내 컨벤션조차 존재하지 않던 상황에서 신입 개발자 셋이서 모든 것을 구축해나가야 했다. 그럼에도 불구하고, BE팀은 서로가 서로의 든든한 버팀목이 되어주었다. 동기들은 정말 열정적인 사람들이었다. (퇴근하고 다같이 양꼬치를 먹으면서도 개발이야기를 놓지 않으셨던 프로님들이 계속 ..