IAM USER 생성- IAM은 AWS리소스에 대한 세부 권한을 제어할 수 있는 서비스입니다. IAM 유저별로 특정 리소스에 대한 접근 권한을 다르게 부여해 서비스를 이용하면, 루트 계정에 대한 보안을 강화할 수 있습니다.- IAM 계정을 생성한 이후, Access Advisor탭에서 허용된 서비스들을 확인할 수 있습니다. 기본적으로 설정값으로 세팅된 IAM 계정의 경우 어떠한 접근 권한도 부여받지 못한 것을 확인할 수 있습니다. Access Key 생성- IAM USER에 부여된 권한을 이용해 리소스에 접근하는 방법 중 하나는 Access Key를 이용하는 것입니다.- Access Key는 Security credentials 탭에서 새롭게 생성할 수 있습니다.- 생성된 키는 확인 후에 csv파일로 저..
검색에 와일드카드 문자 사용 가능Splunk에서 데이터를 효과적으로 검색하려면 검색 연산자를 사용합니다.만약 특정 서브넷으로 들어오는 트래픽 전체를 검색하고 싶으면 어떻게 해야할까요?Splunk에서는 와일드카드 문자를 사용한 검색을 허용하고 있습니다.-- 목적지 주소가 192.168로 시작하는 모든 ip주소에 대한 검색dest_ip="192.168.*" 파이프라인 사용 가능Splunk는 Linux의 파이프(`|`)와 유사한, 하나의 명령어의 출력을 다른 명령어의 입력으로 전달할 수 있는 파이프라인 기능을 지원합니다. 따라서 파이프라인을 사용하려면 추가적으로 실행할 명령어를 후에 반드시 입력해야합니다.예를 들어, `stats` 명령어는 search 쿼리의 결과에 대해 집계 통계 연산을 수행합니다.dest_..
왜 MapStruct와 같은 주석 매핑을 사용하는 가? 1. 직접 하나하나 매핑하는 것은 굉장히 귀찮은 일이다. 2. 비즈니스 로직에 매핑 코드가 끼어있으면 코드 가독성이 떨어질 수 있다. 3. 개발자가 직접 매핑을 하다보면 실수가 발생할 수 있다. 4. 변경사항이 발생했을 경우 Source나 Target 코드만 변경하면 된다. 사전 설정 이 글은 MapStruct 1.5.5.Final Reference Guide를 기준으로 작성되었습니다. MapStruct는 Java9 이상의 버전에서만 사용할 수 있습니다. (@Generated의 사용이 필요함) MapStruct 종속성 설정 1. Maven 프로젝트 ... 1.5.5.Final ... org.mapstruct mapstruct ${org.mapstru..
문제 상황 Elastic Beanstalk을 활용해 웹 서비스를 배포하고 있었는데, 환경 속성을 통해 API key값을 관리하고자 했습니다. 그러나 모종의 이유로 환경변수를 등록해도 환경변수가 적용이 되지 않아 어려움을 겪었습니다. 그렇다고 공개된 코드에 API key값을 노출시킬 수는 없는 노릇이고, 어떻게 해야할 지 고민하던 중 AWS Systems Manager내의 Parameter Store를 알게 되어 적용해보기로 했습니다. ParameterStore 내에서 파라미터 생성 AWS 콘솔에 로그인을 한 이후, AWS Systems Manager 내의 Parameter Store에 접근하여 파라미터 생성을 클릭합니다. 계층 구조로 파라미터 이름을 설정해줍니다. 유형은 보안 문자열을 선택해주고, 암호화..
Spotless란? Spotless는 코드 포맷팅을 자동화하여 프로젝트의 코드 스타일을 일관성 있게 유지하는 데 도움을 주는 Gradle 및 Maven 플러그인입니다. Spotless는 다양한 프로그래밍 언어와 파일 형식을 지원하며, Google Java Format, ktlint, Prettier 등과 같은 외부 코드 포맷터와 통합할 수 있습니다. 이러한 도구를 사용하여 코드의 일관성을 유지하고, 리뷰 프로세스를 간소화하며, 코드 품질을 향상시킬 수 있습니다. Spotless는 특히 여러 사람들이 함께하는 프로젝트에서 굉장한 위력을 발휘할 수 있습니다. Spotless 적용법 Spotless를 프로젝트에 적용하려면 먼저 `build.gradle` 파일에 Spotless 플러그인을 추가해야 합니다. id..
소프트웨어 개발을 할 때, 신규 기능을 추가하거나 코드를 변경하는 과정에서 오류를 발생시키는 것을 두려워하는 개발자들이 많습니다. TDD, 즉 테스트 주도 개발은 이러한 두려움을 해결해주는 도구이자 철학 중 하나입니다. 이 글에서는 TDD가 무엇인지, 그리고 어떻게 TDD를 사용해야할 지 알아보겠습니다! TDD란 무엇일까 TDD는 소프트웨어 개발 방법론 중 하나로, 테스트를 먼저 작성한 다음 그 테스트가 통과되도록 코드를 작성하는 방법입니다. 즉, TDD는 매우 짧은 개발 사이클을 반복하는 소프트웨어 개발 프로세스입니다. TDD의 기본적인 원리는 '빨간색 - 초록색 - 리팩토링' 순서로 진행됩니다. 빨간색은 작은 테스트를 작성하는 것입니다. 설령 컴파일에도 실패할지라도 구색만 갖춘 테스트를 먼저 작성합니..
사용자 인증 인증은 웹 애플리케이션에서 가장 중요한 구성 요소 중 하나입니다. 인증 과정에서 사용자의 신원을 확인하고, 해당 사용자에게 적절한 권한을 부여하는 것이 주 목표입니다. 이번 글에서는 웹에서 널리 사용되는 인증 방법들에 대해 알아보겠습니다! 인증 방법 쿠키 쿠키란 무엇인가? 쿠키는 브라우저에 저장되는 작은 단위의 문자열 파일들입니다. 이름, 값, 속성값을 저장하고 있습니다. 보통 아래와 같은 형식으로 응답 헤더에 담아 서버에서 클라이언트로 전송됩니다. { Set-Cookie: user_id=12345; HttpOnly; SameSite=Lax; } 인증 과정 사용자가 로그인 요청을 보냅니다. 서버는 사용자의 신원을 확인하고, 유효한 사용자일 경우 `Set-Cookie` 헤더를 사용하여 응답에 ..
@ResponseStatus `@ResponseStatus`는 스프링에서 제공하는 어노테이션으로, HTTP 상태 코드와 예외 클래스를 연결시켜 줍니다. 이 어노테이션을 이용하면 예외 발생 시 원하는 HTTP 상태 코드와 메시지를 클라이언트에게 반환할 수 있습니다. @ResponseStatus(value = HttpStatus.NOT_FOUND, reason = "Resource Not Found") public class ResourceNotFoundException extends RuntimeException { public ResourceNotFoundException(String message) { super(message); } } 위 예제에서 `ResourceNotFoundException` 은..