개요현재 프로젝트에서 파일 저장소로 S3를 사용하고 있다. 파일을 저장하면서 몇 가지 요구 사항이 붙게 됐다. 1. 업데이트를 하면 파일이 새로 업로드됨2. 그런데 업데이트 하기 전 파일로 롤백하려는 요구 사항이 있을 수 있음3. 그럼 업데이트된 파일을 어떻게 관리할 것인가? 사용하지 않는 파일에 아이디를 일일히 부여하는게 맞는가? 그럼 로우가 계속 늘어날텐데?4. 그러면 삭제 정책이 필요한데, 얼마나 저장할 것이며 어떻게 삭제할 것인가? 스케줄러를 돌리는 것도 말이 안되지 않나? 이런식으로 계속 꼬리질문이 나오는 상황에서 S3를 뒤져보던 중 객체 버저닝이란 것을 알게 됐다.https://docs.aws.amazon.com/ko_kr/AmazonS3/latest/userguide/versioning-w..
이 글에서 조금 더 나아간 버전이다.2024.02.01 - [개발/Kotlin] - 코틀린에서 static class 사용하기 : companion object - 자바와 다른 점 3 Utility 클래스 용으로 static을 사용하기 위해서 companion object를 쓰다가 확장함수까지 알게되서 정리한 글이었고, 이번엔 object를 걸 알게되서 다시 작성해본다. 아래에 작성한 내용들은 내가 사용하면서 느낀 점들이 조금씩 녹아있어서 오피셜한 내용을 파악하고 싶으면 코틀린 공식 문서를 보는 것을 추천한다. https://kotlinlang.org/docs/object-declarations.html#data-objects 목차를 따고 들어가면 다음 순서로 정리된다. 1. compaion object..
저번 글에서, Kotlin DSL로 JOOQ를 프로젝트에 적용시켜봤다.2025.02.28 - [개발/SPRING] - Kotlin + SpringBoot에 JOOQ 적용기 - 1. 선택 이유와 코드 자동 생성하기 사실 사용법은 여기서 다룰 필요 없이 공식문서에서 굉장히 잘 다뤄주고 있다.https://www.jooq.org/doc/latest/manual/sql-building/sql-statements/select-statement/ 이번 포스팅에서는 그냥 내가 썼던 쿼리들을 몇개 가져와서 어떻게 썼나 소개해보려고 한다. SELECTfun findById(userId: String, projectId: String): Project { return dsl.selectFrom(PROJECTS) ..
난 코테를 매우 싫어한다. 아무것도 몰랐을 때야 아무 생각없이 공부했지만, 코딩 테스트는 실무랑 완전히 동떨어져있다는 걸 알게된 이후로는 코테 공부는 시간 낭비라고 생각을 하고 있다. 하지만, 아직도 많은 기업들이 경력직 개발자에게도 코딩 테스트를 요구하기 때문에 아쉬운 사람이 공부해야하는 어쩔 수 없는 상황이다. 그 와중에 작년 말, Dale님이 운영하는 코딩테스트 스터디를 추천받았고 이번에 3기로 출발해서 15주차까지 완주했다. 목표 였던 모든 문제 완주하기를 어떻게 완료하긴 했는데 솔직히.. 조금 힘들었다. 아니 많이 힘들었다. 특히 하드문제는 GPT의 도움없이는 코드를 완성하기 어려웠다. 다 맞았다고 생각했는데 예외 한두개 때문에 코드가 엄청나게 복잡해지는 일이 많았다. 그래서 그런지 주차가 지날..
나는 이제 5.x년 6년차에 접어든 개발자이다. 긱뉴스에서 재미있는 글을 보고 비슷하게 정리해봤다. https://news.hada.io/topic?id=3635 업계에서 6년 있은 뒤, 마음이 바뀐 소프트웨어 개발 토픽들 | GeekNews마음을 바꾼 것들: 과거엔 싸웠지만, 이제는 믿게된 것들다양한 경험 수준을 가진 사람들로 구성된 팀에서는 Typed 언어가 더 좋음스탠드업 미팅은 신참들을 살펴보는데 유용스프린트 회고는 유news.hada.io https://news.hada.io/topic?id=19081 업계에서 10년 있은 뒤, 마음이 바뀐 소프트웨어 개발 토픽들 | GeekNews4년 전에도 같은 주제로 글을 작성했고, 10년째에 돌아보기로 해서 다시 작성함바뀐 생각들단순함은 저절로 주어지지 ..
서버 개발 중 스프링 부트가 실행 될 때, 반드시 한번 실행 시키고 싶은 코드가 생겼다. 코드 상 서비스로직에 추가해야할 것 같고, 굳이 빈일 필요가 없다. 예를 들어, 변수에 어떤 값을 초기화 한다던가, 객체를 초기화 한다던가 여러가지 예가 있을 것 같다. 여러가지 방법이 있다. 하나씩 정리해보자.1. @PostConstruct @Serviceclass DataService { private val dataList = mutableListOf() @PostConstruct fun loadData() { // 애플리케이션 시작 시 데이터 초기화 dataList.addAll(listOf("Data1", "Data2", "Data3")) println(..
개요이직 후 거의 바로 QueryDSL을 도입했었다.스프링부트에 QueryDSL 적용기 - 1 (Mybatis vs JPA vs JOOQ vs QueryDSL 비교)스프링부트에 QueryDSL 적용기 - 2 (설치 및 사용법, Spring Data JPA와 함께 사용하기) QueryDSL 도입에는 여러가지 이유가 있는데 대표적인 이유로는 담당하게된 프로젝트가 MyBatis와 JPA가 혼재되어 있었다는게 첫번째 이유였다. JPA를 완전히 덜어내기 어려운 상황이었고, 두번째는 이직 전 회사에서부터 엄청난 길이의 MyBatis 동적쿼리에 고통받고 있던 나는 Native Query를 백엔드 코드에서 더 이상 보고싶지 않았기 때문이었다. QueryDSL 도입 초기에는 컴파일 단계에서 쿼리 오류를 잡아주는 게 너무..
개요기존 서비스에서는 EKS + ArgoCD를 이용한 GitOps를 구축해놨었다. 그런데, 새로운 프로젝트에서는 ECS를 쓰면서 CI/CD를 아예 갈아치워야 하는 상황이 됐다. ECS 환경에서도 ArgoCD를 할 수 있다고는 하는데... 하는 방법이 구체적으로 나와있지 않았다. ArgoCD 메인테이너가 해준 설명 : https://github.com/argoproj/argo-cd/discussions/17843 어떻게해야하나 찾아보니까... GitHub Actions에서 ECS용 워크플로우를 만들어놔서 ArgoCD보다 더 쉽게 CI/CD를 구축할 수 있었다. 원리는 Task Definition에 명시해둔 이미지 이름을 변경하고 Task를 재실행시켜서 재배포하는 방식이다. 준비물은 Task Definit..
- Total
- Today
- Yesterday
- java
- AWS EC2
- AWS
- CORS
- 스프링부트
- 인프런
- OpenAI
- S3
- ChatGPT
- docker
- 람다
- Log
- terraform
- 오블완
- 후쿠오카
- CloudFront
- ecs
- JWT
- cache
- Kotlin
- elasticsearch
- EKS
- AOP
- lambda
- springboot
- Redis
- Spring
- GIT
- serverless
- 티스토리챌린지
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
