Octoping의 블로그
article thumbnail
record에서 배열 사용하지 않기
언어/Java 2023. 8. 28. 22:12

이전에 Java에서 불변 데이터 객체를 만들기 위해서는 여러 보일러플레이트들이 많이 필요했다. 그리고 이런 불편을 해소하기 위해 JDK 14부터 record라는 녀석이 추가되었다. getter, equals, hashcode, toString 등을 자동으로 만들어주어, 불변 데이터 객체를 쉽게 만들 수 있게 해준다. 하지만 이런 record를 사용할 때 조심해야 할 점이 있다. public record Person( String[] names, int age ) { } 바로 다음과 같이 레코드의 구성요소에 배열(array)이 있을 경우이다. 레코드의 구성요소에 배열이 존재할 경우, 레코드가 보일러플레이트들을 자동으로 생성해줌에도 불구하고 직접 equals, hashcode, toString을 재정의해주어..

article thumbnail
우리 회사 웹 서비스 좌충우돌 Yarn Berry 도입기

안녕하세요. 모바일엔트로피에서 웹 프론트엔드를 담당했던 개발자 Octoping입니다. 해당 글은 리멤버 웹 서비스 좌충우돌 Yarn Berry 도입기를 아주 감명 깊게 읽었던 한 개발자가 Yarn Berry를 도입하고, 그 과정에서 겪었던 여러 이슈들을 정리한 글입니다. 리멤버 웹 서비스 좌충우돌 Yarn Berry 도입기 - DRAMA&COMPANY 리멤버 프로덕션 서비스를 Yarn Berry로 마이그레이션 해본 경험, A to Z까지! blog.dramancompany.com 리멤버의 킹갓종택님과는 다르게 이 글은 프론트엔드 초보들끼리 삽질한 내용들이 주가 될 것 같아, 어찌보면 저 원본 글과는 달리 조금 절망편의 느낌이 묻어나는 글이 될 것 같네요 ㅎㅎㅎ Yarn Berry를 써야 할 결심 리멤버 ..

article thumbnail
사내 세미나 - DevOps로 일상 속 불편함 개선하기
개발 일반/DevOps 2023. 8. 22. 14:04

들어가기 앞서 해당 글은 2023년 3월 16일, 회사 워크샵에서 발표했던 DevOps로 일상 속 불편함 개선하기 세미나의 대본과 자료를 '아카이브 겸' 하여 거의 그대로 가져왔습니다. 따라서 문체가 발표 톤인 점 양해 바랍니다~~ DevOps로 일상 속 불편함 개선하기 다들 Redmine 잘 사용하고 계신가요? 혹시 Redmine에 대해 처음 들어보실 신입 분들을 위해 Redmine에 대한 간단한 소개를 해드리자면, Redmine은 저희 회사에서 사용 중인 프로젝트 이슈 관리 시스템입니다. 그런데 사실 저는 이 Redmine을 쓸 때 불편한 부분이 되게 많았습니다. 로그인도 종종 풀리기도 하고, 매번 이메일로 제보되는 장애 건을 Redmine에 옮겨 적는 것도 귀찮았고, 이슈 번호로 해당 이슈 페이지에..

article thumbnail
함수의 파라미터를 리터럴로 받는 방법과 응용

타입스크립트를 사용하다보면, 더 정확한 타입 추론을 위해 함수의 파라미터를 string, number 따위 대신 리터럴로 받고 싶어질 때가 있다. 굉장히 인공적인 예시이지만 다음 예시를 살펴보자. 타입을 리터럴로 받고 싶은 상황의 예시 function returnTypeofString(name: string) { return name; } // both types are string 🤯 const res = returnTypeofString("abc"); const res2 = returnTypeofString('John' as const); 나는 아주 강력한 타입 추론을 위해 res의 타입이 'abc'와 같이 나오길 원한다. 하지만 타입은 string으로 나오게 된다. 하지만 이런 상황에서 리터럴로 타..

article thumbnail
Nest.js 서버를 서버리스로 Vercel에 배포하기

들어가기 전에 Nest.js는 Node.js 진영에서 널리 쓰이고 있는 서버 프레임워크이다. 그리고 이런 서버를 클라우드 환경에 배포하기 위해서는 AWS EC2, Oracle Cloud 등의 컴퓨팅 인스턴스 위에 올리는 방법이 정석이겠다. 하지만 Nest.js는 서버리스를 지원하고, Vercel은 서버리스를 지원한다. 이를 이용해서 무료로 간단히 Vercel에 서버를 배포할 수 있다. 방법 방법 자체는 간단하다. 프로젝트 최상단에 vercel.json을 만들고 다음과 같이 작성한다. { "version": 2, "builds": [ { "src": "src/main.ts", "use": "@vercel/node" } ], "routes": [ { "src": "/(.*)", "dest": "src/mai..

article thumbnail
애그리거트 간 참조는 id로 하기 (without JPA)
개발 일반/방법론 2023. 8. 10. 00:51

들어가기 전 주의 이 글은 초보 백엔드 개발자가 정도(正道)가 무엇인지에 대해 가르침을 받지 못해 열심히 땅바닥에 헤딩해가며 도메인 주도 개발에 대해 이해해보려 하는 슬픔의 시간의 결과물로 혼자 생각해낸 교훈입니다... 만약 글의 내용 중 잘못된 부분이 있다면 언제든 바로잡는 댓글을 달아주시면 정말 감사드리겠습니다. 발단 때는 2023년.. Nest와 Prisma를 사용해서 열심히 백엔드 (사이드) 프로젝트를 하고 있었다. Prisma는 ORM이지만 JPA와는 다르게, 쿼리의 결과로 '엔티티의 모델 클래스'가 아니라 순수한 자바스크립트 오브젝트를 반환한다. 다시 말해, Rich Domain Model을 사용해 프로그래밍하기 위해서는 도메인 객체로서 엔티티 클래스를 활용할 수 있는 JPA와 다르게 Pris..

article thumbnail
'그림으로 이해하는 AWS 구조와 기술' 정리 및 사담
도서 2023. 8. 4. 17:29

배경 국문과 친구가 우리 동네에 있는 중고 서점에만 있는 시집을 하나 사달라고 하여, 처음 가봤던 알라딘 중고 서점에 컴퓨터 서적이 있길래 신나서 돌다가 발견한 책이다. 기존에 산업기능요원의 신분으로 다녔던 회사에서 NHN 클라우드를 써본적은 있다. 하지만 AWS는 전세계적으로 가장 많이 쓰이고 있는 클라우드이기도 하고, NHN 클라우드와 비교해서 더 좋은 기능이 많다고 느꼈다. 당장 생각 나는 것들을 몇 가지 뽑아보자면 다음과 같은데. RDS에서 슬로우 쿼리 발생 시 AWS의 경우 CloudWatch와 Lambda 등의 연동을 통해 데이터를 수집하기 좋지만, NHN의 경우 그 기능이 좀 빈약하다. (메일 받는 거 말고 못하는듯) AWS는 CodeDeploy를 사용해서 배포 자동화를 구축하기 나름 편한 ..

article thumbnail
Api 보낼 때 RestTemplate, WebClient.. 그리고 RestClient?

RestTemplate의 시대가 저물다 Spring은 3.0버전부터, 간편하게 HTTP 통신을 할 수 있는 RestTemplate라는 내장 객체를 선보였다. 이 RestTemplate은 멀티 쓰레드 방식을 사용하고, Blocking 방식을 사용한다. 이 RestTemplate는 참 오랜 시간동안 잘 쓰였지만 바로 뒤에 말할 WebClient의 등장 이후 RestTemplate는 유지관리(maintenance) 모드에 들어가게 되었다. (이와 관련된 해프닝으로 RestTemplate이 deprecated 되었다는 얘기도 쫙 돌았었는데, 관련한 내용은 토비님께서 잘 정리해두신 영상이 있다: https://youtu.be/S4W3cJOuLrU ) WebClient와 WebFlux WebClient는 Sprin..

article thumbnail
[번역] Prisma가 기존의 '전통적인' ORM보다 더 나을까요?

들어가기 전에 해당 글은 다음 글을 번역하였습니다. https://practica.dev/blog/is-prisma-better-than-your-traditional-orm/ Is Prisma better than your 'traditional' ORM? | Practica.js Intro - Why discuss yet another ORM (or the man who had a stain on his fancy suite)? practica.dev 소개: 왜 또 다른 ORM에 대해 이야기할까요? 베터리지의 헤드라인 법칙에 따르면 '물음표로 끝나는 헤드라인은 NO라는 단어로 대답할 수 있다'고 합니다. 이 기사도 이 법칙을 따르게 될까요? 한 우아한 사업가가 멋진 턱시도를 입고 손바닥에 명품 시계를..

article thumbnail
[번역] "내 컴퓨터에선 작동합니다"가 어떻게 "내 컨테이너에서는 작동합니다"로 바뀌었을까요?
개발 일반/DevOps 2023. 7. 30. 00:06

들어가기 앞서 해당 글은 다음 글을 번역한 글입니다. 도커를 사용할 때 피해야 할 안 좋은 습관들에 대해 소개합니다. 어느 정도의 의역이 있을 수 있습니다. https://dwdraju.medium.com/how-it-works-in-my-machine-turns-it-works-in-my-container-1b9a340ca43d How “It works in my machine” turns “It works in my container”? You had things running with occasional glitches and there was always an excuse “It works in my machine” as there is rarely identical… dwdraju.medium...