전체 글 159

CI/CD 방식과 각 장/단점

우선 간단히 적으면 다음과 같다. 배포 전략 무중단 배포  롤백 가능성 인프라 비용 적용 용도Blue-Green✅✅높음대규모 서비스, 빠른 롤백 필요Canary✅✅중간점진적 배포, 성능 테스트 필요Rolling✅❌낮음인프라 비용 절감, 지속적 배포Recreate❌✅낮음단순한 서비스, 빠른 배포 필요A/B Testing✅✅높음사용자 반응 기반 배포Feature Toggle✅✅낮음코드 배포와 기능 배포 분리 여기서는 3가지 업데이트 방식만 보려고 한다 .   1. 롤링 업데이트 방식특정 비율로 조금씩 점진적으로 업데이트하는 방식이다. (예: 인스턴스 하나씩 새로 배포되는 )다운 타임 제로라는 장점을 갖고 있다.구글도 작은 서비스를 배포할 때 이방식을 사용하고 있다. 문제점동시에 서비스의 여러 버전이 존재한다..

개발/TIL 2025.02.16

controller 에서 dto 그대로 전달하기 vs 파라미터로 나누어 전달하기

DTO 전달하는 방식서비스 확장성이 높음새로운 필드가 추가될 경우, Service의 메서드 시그니처를 변경하지 않고 DTO만 수정하면 된다. 의미 전달이 명확함DTO 자체가 하나의 도메인 개념을 가지므로, 어떤 요청인지 쉽게 이해 가능하다.서비스 인터페이스가 명확함createUser(UserRequestDto requestDto)처럼 도메인 중심적인 메서드 시그니처를 유지할 수 있다.하지만 반대로 동일한 함수를 다른 곳에서도 사용하고 싶을 때 dto 를 만들어서 전달하는 과정이 추가될 수도 있다.   파라미터를 전달하는 방식 DTO 와 독립적: dto가 변경되어도 service 레이어가 변경될 필요는 없다. dto 는 controller 의 요청을 표현하는 역할, service 레이어는 비즈니스 레이어를..

개발/TIL 2025.02.15

mongodb aggregation Spring Data MongoDB 에서 사용하기 (mappedResults - 클래스 매핑)

Spring Data MongoDBSpring Data JPA 와 다르다.  JPA 와 다르기 때문에 프로젝트 내에서 mongoDB가 아니라 RDB, 예를들어 Mysql을 위해서 Spring Data JPA 를 함께 사용할 경우 transaction 이 되는 방식 등등이 다르기 때문에 주의가 필요하다.  각설하고,  이 프레임워크를 이용해서 mongodb aggregation 수행 시 입력한 class 에 대해 mapping 된 결과를 mappedResults 필드에 저장하도록 할 수 있다.   이렇게 사용하면 mappedResult 에 알아서 클래스의 필드에 매핑이 되는 것이다. class TagCount { String tag; int n;}import static org.springframework..

개발/TIL 2025.02.14

개발 현업 7개월차의 회고

회사생활에 대한 회고와 개발 현업에 뛰어들게 된지 7개월차가 된 소감을 적어보려고 한다.  1. 녹록치 않은 회사 생활, 그러나 중요한 건 내가 어떻게 생각하고 무슨 일을 하느냐임을. 여느 회사생활이 그렇듯 녹록치 않을 거라고 생각은 했다. 우선 회사생활 이야기는 각설하도록 하고.. 이 회사에 와서 고쳐먹은 생각이 있다. 나는 내가 그냥 나름 공부하는 것도 즐기고, 일하는 것도 좋아하는 성격이라고 생각했었다.  그런데 그게 아니었다.  사람은 그렇게 단순한 존재가 아니었다.  나는 두루뭉실하게 '공부'하는 걸 즐거워하고 '일'하는 걸 좋아하는 사람이 아니었다.  내가 공부함으로써 미래에 기대되는 쓰임새가 있는 지식을 쌓는 것을 좋아하는 사람이었다. '일로써의 일' 같은 일이 아니라, 사소한 것이라도 실제..

끄적 2025.01.04

애플리케이션 에러 로깅하기, 에러 핸들링 (feat. clean code)

fastapi 을 이용한 web app 을 개발하면서, 어떻게 에러처리를 할 지 고민하면서 읽은 글을 정리해보았다. 어디서 에러를 던질 것이며, 어디서 이 에러에 대한 핸들링을 할 것이냐는 클린코드 관점, 책임 분리 관점, 협업 관점에서 모두 필요한 고민지점인 것 같다.  고민해두고, 좋은 참고자료를 통해 예시를 공부해두어서 개발에 참고하기 위해 이 글을 작성했다. 참고자료: [원문]error handling 방식의 큰 전통적인 2가지 방법을 살펴보자. 첫번째는 LBYL(Look Before you Leap) 방식이고, 두번째 방식은 EAFP(Easier to Ask Forgiveness than Permission) 방식이다.  1. Look Before You Leap (LBYL)돌다리는 두들겨 보고..

개발/TIL 2024.11.13

글또 후기 & 2024 상반기 후기

keyword & 목차1. 많은 사건2. 글또 3. ssafy4. 취업5. 나 돌아보기6. 책  1. 많은 사건2023년 12월 마지막에서 두번쨰 주에, 대전 ssafy 프로그램에 합격하게 되었다. 글또로 글을 쓰면서 원래 공부하던 42 Seoul 에서 계속 공부할 것이라 생각했던 예상이 깨지고, 갑작스럽게 이사 준비와 새로운 자취 생활의 행보를 걷게 되었다.  2. 글또여러가지 사건이 겹치면서, 처음의 포부와는 달라진 감이 있지만, 글또가 있엇던 덕분에 꾸준히 개발 블로그에도 조금씩 더 글을 적을 수 있었다. 사실 글또가 나에게 가장 큰 도움이 된 건 다름아닌 '대나무 숲'이었다. 혼자 모든 걸 결정하는 상황이 되니, 고민되는 것도 너무 많고 나에게 딱 맞는 선택을 내리고 싶어서 안달이었는데, 대나무 ..

카테고리 없음 2024.05.12

글또 X udemy 강의 후기 (feat. Docker Kubernetes 와 Spring Boot 배우기)

Docker& Kubernetes : 실전 가이드, Spring Boot 3 & Spring Framework 6 강의 2개를 글또 X Udemy 프로그램 덕분에 수강할 기회를 얻게 되었다.  여러 목록 중 2개 강의를 선택한 이유는, spring framework를 이용해서 백엔드 개발에 전문을 쌓는게 목표였기 때문이고, 백엔드는 서버를 가동시키는 클라우드 서비스, 즉 Docker, Kubernetes 와 밀접하게 관련되어있기 때문에 공부하고 싶었기 때문이다.   뭣보다 한 프로젝트를 성공적으로 배포까지 하려면 가져야할 필수 지식이기 때문에 수강하고 싶었다. 이제 개발 공부한지 3년 차인데, 이 정도면 나름 빠르게 배워서 잘하는 거 아닌가 싶은 마음도 들지만, 인터넷은 넓고 잘하는 사람은 많고 그것이 ..

끄적 2024.05.12

[Spring Security] Spring Security 의 동작과정과 구현

본 글은 Spring Boot 3 & Spring Framework 6 마스터하기! (https://www.udemy.com/course/spring-boot-and-spring-framework-korean/) 를 보고 정리한 글입니다.글또 x Udemy 이벤트로 수강하게 된 강의인데, 좋은 기회를 얻게 되어 감사드리는 마음입니다!컴퓨터에 강한 나라 인도 출신 강사님이 설명해주시는 spring framework 강의로, Hibernate, React, Docker AWS 등 spring framework 뿐 아니라 이를 활용해서 하나의 어플리케이션을 만들기 위한 전반적인 과정을 담고 있습니다.가장 좋은 점은 정말 핵심 이론만 쏙쏙 골라서 설명한 후 , 코드를 작성하는 방식이라는 점입니다.군더더기 없이 ..

개발/java 2024.04.14

[Spring - JPA] 4. 엔티티 매핑

목차 객체와 테이블 매핑 : @Entity, @Table 필드와 컬럼 매핑 : @Column 기본 키 매핑 : @Id 연관 관계 매핑 : @ManyToOne, @JoinColumn 1. 객체와 테이블 매핑 1. @Entity 이 어노테이션이 붙으면 JPA가 관리한다. 이 어노테이션 사용 시 주의점 기본 생성자 필수 (public or protected 생성자) 다양한 기술을 사용하기 위해서 필요 final 클래스, enum, interface, inner 클래스에는 사용 불가 저장할 필드에 final 사용 x @Entity 속성 name : JPA에서 사용할 엔티티 이름 지정 (기본값으로는 클래스 이름 그대로)2. @Table 엔티티와 매핑할 테이블 지정 속성 : name, catalog, schema,..

개발/java 2024.03.16

Spring 에서 configuration 을 다루는 방법 - @Value vs @ConfigurationProperties

사이드 프로젝트를 하면서 동료 개발자분께서 Components/KakaoKey 의 존재 이유를 여쭤보셨다. application.properties 의 값을 @Value 어노테이션을 이용해 가져와 저장하는 목적의 클래스들이었다. 단순히 환경 설정을 위한 값을 저장하는 빈, 컴포넌트로는 사용하기 애매할 수 있다는 생각이 들었고, @ConfigurationProperties라는 어노테이션에 대해 알게 되어 이번 기회에 정리해보게 되었다. Externalized Configuration 서로 다른 환경에서 애플리케이션이 돌아갈 수 있게 하는 방법 중 하나는 externalized configuration 이다. 여러가지 외부 설정을 java properies 파일, yaml 파일, 환경 변수, command-..

개발/java 2024.02.26
728x90
728x90