분류 전체보기 89

[Java] Stream?

Stream? 자바 8에서 추가된 Stream은 람다를 활용하여 배열에 대한 처리를 간결하게 해주는 기술을 말한다. 배열을 다루기 위해 이전에는 for문을 사용해 요소 하나하나 체크해서 다뤘다. 하지만 이 방법은 배열에 대한 처리가 많아질 수록 코드의 양도 늘어나 가독성이 떨어지게 된다. Stream을 이용해 여러가지 함수를 조합하여 배열을 처리하면 원하는 결과물을 얻을 수 있게된다. 간결한 for문은 Stream을 이용해 한 줄로 줄일 수도 있다. 또, Stream은 병렬처리를 지원하여 처리 속도가 빠른 장점이 있다. 병렬처리란 하나의 작업을 둘 이상의 작업으로 나눠 동시에 진행하는 것을 말함(Thread) 예제

JAVA 2022.06.21

[Spring Boot] JUnit4 + Mock Test

Mock? Mock이란 테스트 코드를 위해 실제 사용되는 객체를 불러오기 어려울 때 가짜 객체를 만들어 사용하는 기술을 말한다. 이번 포스팅에선 단위 테스트 프레임워크인 JUnit4 와 Mock을 이용한 테스트 방법을 소개하겠다. 예제 1 @WebMvcTest 먼저 MockMvc를 사용하기 위해선 @WebMvcTest 어노테이션이 필요하다. (@WebMvcTest 어노테이션은 MockMvc를 자동으로 구성하여 테스트 가능하도록 해준다.) MockMvc - 웹 애플리케이션을 애플리케이션 서버에 배포하지 않고도 스프링 MVC의 동작을 재현할 수 있는 라이브러리 Controller Test perform() - 요청하는 역할을 함 get() - get 방식으로 url 호출 content() - Request ..

Spring, Spring Boot 2022.05.16

nGrinder로 성능 테스트하기

nGrinder? nGrinder는 부하 테스트 플랫폼이다. 서버의 성능 테스트, 테스트에 대한 결과 모니터링 등 다양한 기능을 지원하고 있다. (nGrinder는 네이버에서 개발한 오픈소스 프로젝트이다.) 설치방법 1. Oracle JDK 1.6~ or OpenJDK 1.7~. 설치 2. ngrinder-controller(테스트 인터페이스 제공) https://github.com/naver/ngrinder/releases Releases · naver/ngrinder enterprise level performance testing solution. Contribute to naver/ngrinder development by creating an account on GitHub. github.com..

카테고리 없음 2022.05.14

[Spring Boot] HTTP 통신을 위한 OpenFeign

OpenFeign? REST형식의 API를 더 쉽게 호출할 수 있게 도와주는 오픈소스 라이브러리 넷플릭스에서 Feign라이브러리를 자체적으로 구현하여 사용되었다가 현재는 오픈소스인 OpenFeign이라는 라이브러리가 나와 더 많은 기능들이 지원되고 있다고한다. 적용법, 예제 단순 REST API CALL에 대한 적용법이다. 1. Dependency 추가 https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-openfeign org.springframework.cloud spring-cloud-starter-openfeign 2. SpringBootApplication에 @EnableFeignClents 어노테이션..

Spring, Spring Boot 2022.05.08

[Spring Boot] HTTP 통신을 위한 RestTemplate사용

REST? REST란 자원을 이름으로 구분하여 해당 자원의 상태를 주고 받는 것을 의미 즉, HTTP URI를 통해 자원을 명시하고 HTTP Method를 통해 자원에 대한 CRUD를 적용하는 것을 의미 따라서 REST 아키텍쳐의 원칙을 지켜 구현한 API를 제공하는 서비스는 RestFul하다고 할 수 있다. REST API URI 설계 규칙 - 슬래시(/)는계층 관계를 나타내는데 사용. - URI 마지막엔 슬래시(/)를 포함하지 않는다. - 하이픈(-)은 URI 가독성을 높이는데 사용. - 밑줄(_)은 URI에 사용하지 않는다. - URI에는 소문자가 적합하다. - 파일확장자는 URI에 포함하지 않는다. RestTemplate? 스프링에서 제공하는 HTTP 통신을 쉽게 사용하기 위한 템플릿 RestTe..

Spring, Spring Boot 2022.05.07

[Jenkins] AWS를 이용한 Jenkins 기반 CI/CD 환경 구축(2)

저번 포스팅에 이어서 AWS 클라우드 서비스를 이용해 Jenkins 환경을 구축해보겠다. AWS? AWS(Amazon Web Services)는 아마존닷컴의 클라우드 컴퓨팅 플랫폼이다. 가상 컴퓨터와 스토리지, 여러 인프라 등 다양한 서비스를 제공하고 있다. 클라우드 서비스란 타사 제공업체가 호스팅하여 인터넷을 통해 사용자에게 제공하는 인프라, 플랫폼 또는 소프트웨어를 말한다. EC2? EC2(Amazon Elastic Compute Cloud)는 사용자에게 가상의 컴퓨터를 임대해주는 서비스를 말한다. 아마존이 "인스턴스"라 부르는 가상 머신을 제공하여 원하는 소프트웨어를 구성할 수 있는 서비스이다. Jenkins를 구축하기 위해 도커를 설치하려면 리눅스 환경의 OS가 필요하다. 도커 관련 글을 작성했을..

AWS/Jenkins 2022.05.02

[JAVA] InputStream 데이터 가져오기 (BufferedReader)

Stream? Stream이란 실제 입력이나 출력이 표현된 데이터의 이상화된 흐름을 말한다. InputStream, BufferedReader API 테스트 코드를 응답 데이터를 Stream형태로 가져와서 출력하는 형태로 작성하던 중에 Stream형태로 가져오는 법만 알지 왜 이렇게 가져오는 지 모르고 있었다. 67LINE을 보면 아래 형태의 코드로 Stream 응답 데이터를 가져오고 있다. BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream())); 위 코드를 보면 HttpURLConnection을 통해 응답 받은 입력 스트림을 가져오는데, 이걸 InputStreamReader로 감싸고 또 BufferedRea..

JAVA 2022.04.12

[AWS] 구글 OTP를 이용한 계정 보안 강화

OTP? OTP(One Time Password)란 일정 시간 마다 무작위로 생성되는 일련의 비밀번호이다. 즉 일회용 비밀번호이며 추가 인증 단계에 사용된다. AWS서비스에서 OTP를 이용해 MFA(Multi-Factor Authenfication) 인증 방법을 추가할 수 있다. AWS 계정 해킹 방지를 위해 MFA 인증을 추가하여 보안을 강화 하는 것이 좋다. MFA - 다단계 인증 MFA 적용 먼저 앱스토어에서 Google Authenticator 어플리케이션을 다운 받는다. AWS 계정 로그인 후 우측 상단의 프로필 하위 메뉴의 "보안 자격 증명" 메뉴를 클릭한다. 멀티 팩터 인증(MFA)의 "MFA 활성화" 버튼을 클릭한다.​ 구글 OTP 인증 어플리케이션을 이용할 것이기 때문에 "가상 MFA 디..

AWS 2022.04.12

[Jenkins] AWS를 이용한 Jenkins 기반 CI/CD 환경 구축(1)

CI/CD? 한 서비스에 대해 자동화된 빌드와 테스트를 진행하여 작업을 검증하고 게시하는 것을 말한다. CI(Continuous integration) - 여러 개발자의 작업물을 하나의 메인라인으로 하루에 몇 번씩 병합하는 작업 방식 (지속적 통합) CD(Continuous Delivery) - 팀이 소프트웨어를 만들면 언제든지 안정적으로 출시될 수 있도록 하는 접근 방식 DevOPS? CI/CD의 중요성을 설명하기에 앞서, DevOPS에 대해 설명하려고한다. DevOPS는 하나의 서비스를 고객에게 제공하기 위해 개발/운영/QA 작업들이 서로 협업하여 장애없이 서비스를 빠르게 릴리즈 하는 방법을 말한다. 서비스가 고객에게 제공되는 과정은 위 사진과 같다. 개발자가 코드를 작성하고, 이를 빌드하고 테스트하..

AWS/Jenkins 2022.04.09

[Java] 스프링 MVC 패턴 프로젝트 코드 개선

프로젝트 코드를 보던 중 아래 형식의 코드를 발견했다. String param1 = (String) paramMap.get("param1"); String param2 = (String) paramMap.get("param2"); String param3 = (String) paramMap.get("param3"); String queryString = String.format("param1=%s&param2=%s&param3=%s", param1, param2, param3); 쿼리스트링을 포함해 특정 경로를 호출하면 쿼리스트링의 파라미터들을 맵 형식으로 받아와 (@RequestParam Map paramMap) 그 맵의 값들을 일일이 가져와 쿼리스트링 문자열을 만드는 코드이다. 이 쿼리스트링의 값은 ..

JAVA/Good Coding 2022.04.04