일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- DevOps
- Kafka
- EC2
- Github Actions
- Redis
- aop
- 어노테이션
- 프로그래머스
- CI/CD
- 유효성 검사
- swagger
- 객체지향원칙
- springboot
- 아키텍처
- AWS
- 테스트 코드
- rabbitmq
- querydls
- JPA
- Java
- trouble shooting
- docker
- 멀티 모듈
- Intellij
- spring boot
- JWT
- Til
- testcode
- MSA
- algorithm
- Today
- Total
목록Til (12)
개발노트

개요이번 팀프로젝트에서 Docker와 Nginx ,GitHub Actions를 사용해 무중단 배포를 했었다.팀원중에 배포를 담당하시는 분이 모든 걸 맡아 진행하셨다. 나는 인프라적인 지식이 부족해 도움이 되지못했다.다음 프로젝트가 시작되기전에 부족한 부분을 채워둘려고 GitHub Actions 와 Docker로 AWS로 배포하는 법을 학습해보고 기록해보려한다. 1. EC2 서버 준비 1 - 1. 주요 인스턴스 설정 Ubuntu는 오픈 소스로 제공되며 라이선스 비용이 없어, 개인 개발자도 부담 없이 사용할 수 있다.또한, 가벼운 OS로 EC2의 리소스를 효율적으로 활용할 수 있도록 최적화되어 있으며, 특히 Ubuntu Server 버전은 GUI 없이 최소한의 패키지만 포함하고 있어 성능과 보안 측면에서 ..

개요도커에 대해 얕게만 알고있어서 간단하게 도커란 무엇인지 컨테이너가 무엇인지 정리하고주요 명령어를 정리해본다 🐳 도커 ( Docker )컨테이너 기반의 가상화 플랫폼으로, 애플리케이션과 그 실행 환경( 라이브러리, 종속성 등) 을 하나의 컨테이너로 패키징 하여 어디서든 실행할 수 있도록 해주는 도구이다. 컨테이너는 가상화에 비해 가볍고, OS에 독립적이며, 빠르게 배포 및 확장이 가능하다는 장점이 있다.개발 과정에서 다른 라이브러리와 충돌하는 것을 방지가 하지위해 격리된 환경이 필요할 때, 완성된 서비스를 배포할 때,배포 중인 서비스를 받아와 테스트 실행 할 때도 유용하다. 핵심 개념이미지 ( Image )컨테이너 실행을 위한 템플릿애플리케이션과 필요한 실행 환경(운영체제, 라이브러리, 설정 등)을..
개요첫 프로젝트가 끝이났다.아쉬움이 조금 남지만 이정도면 나름 잘했다고 생각한다.Spring Security에 대해서 조금 더 알 수 있는 기회가 된 것 같다.코드 리팩터링 과정에서 아쉬웠던 부분은 객체지향 원칙을 최대한 지키려했지만 아쉽게도 전부다 적용하지는 못했다.오늘은 객체 지향 설계의 5가지 원칙 SOLID에 대해 정리해본다. 객체 지향 설계프로그래머가 시간이 지나도 유지 보수와 확장이 쉬운 시스템을 만들고자 할 때 이 원칙들을함께 적용할 수있다.SOLID 원칙들은 소프트웨어 작업에서 프로그래머가 소스 코드가 읽이 쉽고 확장하기 쉽게 될 때 까지 소프트웨어 소스 코드를 리팩터링하여 코드의 문제점을 제거하기위해 적용할 수있는 지침이다. 1. 단일 책임 원칙 (Single Responsibility..

개요단위 테스트를 할 때는 상관없었는데 통합테스트를 진행하니 운영중인 DB의 데이터도 테스트에 포함되어 문제가 발생했다. 이를 개선하기위해 통합테스트 환경에서는 H2 데이터베이스를 사용하도록 DB 환경을 분리해보겠다. application-test.yml 파일 생성기존의 apllication.yml 과 똑같은 위치에 application-test.yml파일을 생성해준다. spring: datasource: driver-class-name: org.h2.Driver hikari.jdbc-url: jdbc:h2:mem:test_db; username: testdb password: jpa: hibernate: ddl-auto: create-drop show-sql..
개요controller에서 스웨거 @Opration 설정을 하고있었는데 관련 설정이 너무 길어 controller의 코드가 지저분한게 상당히마음에 걸렸다. 그래서 이문제를 해결하고자 커스텀 어노테이션을 만들어 설정을 다른 파일에서 관리하고 컨트롤러에서 깔끔하게 적용하게 변경했다. 커스텀 어노테이션 작성에 대해 정리해본다. 어노테이션이란?메타데이터를 제공하는 Java의 기능으로, 코드에 추가 정보를 첨부하여 컴파일러나 프레임워크가 이를 활용할 수있도록 제공한다. 어노테이션은 클래스,메섣,필드 등에 부착할 수있으며, 런타임 또는 컴파일 타임에 특정한 동작을 수행한다. 커스텀 어노테이션 만드는 방법@interface 키워드를 사용하여 어노테이션을 생성한다.@Retention 어노테이션을 사용하여 어노테이션..

개요AccessToken 과 RefreshToken을 발급해 사용할 것이다.로그인에 성공 시 AccessToken 은 헤더에 Authorization 의 키 값으로 포함하고 RefreshToken은 쿠키에 포함해 응답한다.login과 logout을 userService 에서 처리하면서 user 도메인과 token 도메인을 함께 다루다 보니 userService에서 token 관련 기능의 의존성이 너무 커지는게 신경이 쓰였다. 이 부분을 생각하면서 개발을 진행하지않아 이미 문제를 의식했을 때는 변경해야할것이 너무 많아졌다. 조언을 구하고자 튜터님을 찾아가 헥사요AccessToken 과 RefreshToken을 발급해 사용할 것이다. 로그인에 성공 시 AccessToken 은 헤더에 Authorization..

개요queryDSL 에 대해 공부가 필요할 것 같다. 정리해본다. QueryDSL 이란?타입 안전(type-safe) 하고 직관적인 Java 기반의 동적 SQL 쿼리 빌더 이다.주로 JPA, Hibernate, SQL, MongoDB 등의 데이터베이스와 함께 사용되며, 코드 기반으로 SQL 쿼리를 작성할 수 있도록 도와주는 프레임 워크다. 특징 타입 안정성( Type-safety )컴파일 단계에서 SQL 문법 오류를 잡을 수 있다.필드명을 직접 문자열로 입력하는 것이 아니라 코드 기반으로 사용하여, 오타로 인한 오류가 방지된다.가독성 및 유지보수성 증가JPQL이나 SQL을 직접 문자열로 작성하는 방식보다 코드가 직관적IDE의 자동 완성 기능을 활용 가능동적 쿼리 작성이 용이 BooleanBuilder 를..

개요validation이 정상적으로 동작해야하는데 정상 동작하지않는 문제가 발생했다.동일한 코드를 UserController에서는 동작하지만 DeliveryAddressController에서는 동작하지않는 아이러니한 상황이다.import 도 전부 동일한데 왜 DeliveryAddressController에서는 validation이 에러가 발생한걸까? 문제점 controller @PostMapping public ResponseEntity addAddress( @Valid @RequestBody AddressReqDto addressReqDto, @Authent..
개요프로젝트를 진행하면서 JWT를 검증하는 필터를 구현하였다. 여기서 의문점이 든 부분을 정리하고 검색 기능에 사용할 queryDSL에 대해 공부한걸 정리해보려한다. JWT 검증 필터 의문점 @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http.csrf(csrf -> csrf.disable()); http.addFilterBefore(new JwtAuthenticationFilter(jwtUtil), UsernamePasswordAuthenticationFilter.class); http.sessionManagement((sessionManage..

개요오늘은 설계가 끝나고 각자 팀원이 어떤 역할을 맡을지 정했다.여러 기능 중에 나는 User , User의 배송지 , Spring Security 를 담당하게 되었다.혼자서도 몇 번 security를 적용해봤다. 프로젝트에서 담당해서 진행하게되면 나중에 포트폴리오에 도움이 될거라 생각해자진해서 해당 역할을 맡는다고했다. user와 배송지는 간단한 curd 선에서 끝날 것이기 때문에 security도 금방 끝나게 된다면 Spring Boot의 AOP 기능을 추가해 user의 서비스 이용시간을 축적하는 기능을 만들어보고싶다.그래서 오늘은 Spring Boot의 AOP에 대해 정리해보려한다.Spring Boot AOP더보기💡 AOP 는 특정한 긴으을 애플리케이션의 여러 부분에 걸쳐 재사용할 수 있는 프로그..