전체 글 66

단일 스레드로 순차 처리 vs 비동기 vs 멀티스레드 성능 테스트 - Java

오늘은 비동기와 멀티스레드 모두 활용할 수 있는 로그 파일 분석 & 알림 시스템을 만들어 보았다. (한 줄 요약 : 십만 건의 로그 데이터 분석을 1. 그냥 2. 비동기 3. 멀티스레드 4. 비동기 + 멀티스레드 네 가지 케이스로 나누어 비교) 우선 이 프로젝트를 하게 된 이유는,, 실무에서는 대용량 데이터를 처리할 때 어떻게 효율성을 높이고 성능을 높이는지 궁금했다. 1. 기술 블로그를 통해 실무에서의 비동기, 멀티스레드 적용 사례 알아보기 2. 비동기, 멀티스레드의 개념과 어떤 경우에 적용하는지 알아보기 3. 프로젝트 기획하기 4. 로그 더미 데이터 만들기 5. Java로 처리 시간 확인하기 https://11st-tech.github.io/2024/01/04/completablefuture/ Jav..

Project 2024.11.07

AngularJS로 만든 포트폴리오 웹사이트 1일차

angцlarJS로 口ざ든 포트폴己l오 웹バr○l트 1일ㅊr 회ヱ✨이번 프로젝트에서는 AngularJS를 사용해 그 시절 감성 그대로의 포트폴리오 웹사이트를 제작했다.기존에는 React를 활용해 프론트엔드를 구현한 경험이 있다. AngularJS로 개발했을 때의 차이점과 특징이 궁금했다.개발에 앞서 알아본 바로는 AngularJS는 단일 페이지 애플리케이션(SPA) 개발을 위한 자바스크립트 프레임워크로, 클라이언트 사이드에서 동적인 웹 애플리케이션을 개발하는 데 사용된다. 특히 양방향 데이터 바인딩과 MVC 구조로 개발의 편의성을 높여주는 특징을 가진다.1일차 구현 보고이번 주말은 기획과 대략적인 UI 구현, AngularJS 간단하게 사용해보는 걸 목표로 했다. 1차 기능 개발 후 바로 배포하고 나머지..

Project 2024.11.04

[프로젝트 회고] 대용량 데이터 처리 프로젝트(최저 가격 검색 시스템)

프로젝트 개요최근 클라우드 엔지니어링 프로젝트에서 공연 예매 서비스를 고가용성 클라우드 시스템으로 구축했습니다. 이 과정에서 대용량 데이터 처리에 대한 관심이 생겨, 성능 이슈를 파악하고 해결하는 경험을 하고자 이번 프로젝트를 진행했습니다. 개발 환경은 Java 17, Spring Boot 3.3.0을 활용했습니다. 한국소비자원의 생필품 가격 정보 데이터는 약 21만 건의 데이터가 있어 부하 테스트에 적합하다고 판단하여 이 데이터를 사용하기로 결정했습니다. 데이터는 아래 링크에서 다운로드할 수 있습니다.한국소비자원 데이터  프로젝트의 목표는 사용자의 위치나 지정된 지역을 기준으로 최저 가격을 검색하는 기능을 제공하는 것이었습니다. 시/도, 구, 동 단위로 검색하여 최저 가격으로 구매할 수 있는 곳을 쉽게..

Project 2024.08.11

[AWS] CloudWatch, S3를 활용한 실습

미션 CPU 사용량 처리를 AWS CLI 기반으로 개발 개인이 어떤 경보를 발생시킬 것인지 선택 후 완성 S3 사용 예제 하나 완성 S3 기술 문서 보고 직접 구축 및 데이터 저장 test 완료 AWS 기사 또는 매뉴얼 하나 읽기 실습 1 CPU 사용량 처리를 AWS CLI 기반으로 개발 AWS CLI를 사용하여 CPU 사용량 경보 설정 공식 문서를 참고하여 실습했다. https://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/US_AlarmAtThresholdEC2.html 아래와 같이 put-metric-alarm 명령을 사용하여 경보를 생성한다. aws cloudwatch put-metric-alarm --alarm-name cpu-m..

Infra 2024.02.28

@RequestBody와 @ModelAttribute를 언제 사용해야 할까?

Intro Spring Boot 프로젝트 진행 중 REST API로 개발하다가 Thymeleaf 사용 차 @Controller 어노테이션으로 변경한 일이 있었다. 모여서 회의하다가 Server Side Rendering와 Client Side Rendering에 대한 개념 등 조금 더 알아보기로 했다. 그 중 난 @RequestBody와 @ModelAttribute의 차이점과 언제 활용할 수 있는 지에 대해 알아본 내용을 바탕으로 팀 기술 문서 자료를 준비했다. 컨텐츠 주제 @RequestBody VS @ModelAttribute 차이점, 유사점 등등 각각 특징 등을 비교해서 포스팅 해주세요. 이때 해당 작업은 어떨 때 구분해서 사용 되는지에 대해서 설명해주고! 해당 작업을 사용한 예시 코드도 좀 부탁드..

Project 2024.02.26

[AWS] DynamoDB 테이블 생성 및 데이터 조회

Amazon DynamoDB란? Amazon DynamoDB는 완전관리형 NoSQL 데이터베이스 서비스로서 원활한 확장성과 함께 빠르고 예측 가능한 성능을 제공한다. DynamoDB는 분산 데이터베이스를 운영하고 크기 조정하는 데 따른 관리 부담을 줄여서 하드웨어 프로비저닝, 설정 및 구성, 복제, 소프트웨어 패치 또는 클러스터 크기 조정에 대해 걱정할 필요가 없게 한다. 또한 DynamoDB는 유휴 시 암호화를 제공하여 중요한 데이터 보호와 관련된 운영 부담 및 복잡성이 감소한다. https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Introduction.htmlW What is Amazon DynamoDB? - Amazon DynamoD..

Infra 2024.02.26

[AWS EC2] Docker로 Jenkins 설치 및 GitHub Webhook 설정

목차1. Intro2. AWS EC2 인스턴스 생성3. AWS EC2에 설치 및 환경 설정4. Jenkins 설정하기5. Jenkins 빌드 시 다운되는 현상6. 결과 Intro어제까지 VirtualBox의 Linux 환경에서 Docker를 사용하여 Jenkins를 설치했다. 오늘은 AWS EC2에서 Docker를 사용하여 Jenkins를 설치해본 후, GitHub Webhook을 설정하여 이벤트가 발생하면 자동으로 빌드가 되게 했다. AWS EC2 인스턴스 생성AWS I AM 계정을 받은 후 EC2 서비스에서 키 페어를 생성해줬다. 서비스 > EC2 > 키 페어 생성에서 해준다. 키 페어는 탈취 당하면 안 되기 때문에 온라인 상에 올리지 않도록 주의한다. 이제 EC2 인스턴스를 시작해보자. EC2 대시..

Infra 2024.02.21

[Trouble Shooting] Windows와 Linux의 파일 권한 차이

문제점 발생 Jenkins에서 파일 실행 권한이 없어서 gradlew 스크립트를 실행할 수 없는 문제 Windows에서 개발한 프로젝트를 github에 업로드 후 Jenkins에 다운로드 받은 -rw-r--r-- 1 jenkins jenkins 8692 Feb 20 05:12 gradlew 의 권한과 Windows에서의 rwxr-xr-x 1 Admin 197121 8692 Feb 20 09:17 gradlew* 권한이 달랐다. 그 이유는 Windows와 Unix 계열 운영체제(예: Linux, macOS)에서는 파일 권한 표현 방식이 다르기 때문이다. Windows에서는 **rwxr-xr-x**와 같이 표현하지 않는 대신에 파일 속성을 통해 권한을 설정하고 Unix 계열 운영체제에서는 **rwxr-xr-..

Infra 2024.02.20

[포트폴리오 특강] 회고

우리FISA 2기 Cloud Engineering 과정에서 진행된 포트폴리오 특강에 대한 회고를 해보려고 한다. 강의는 2월 29일 월요일 하루동안 진행되었으며 개발자 취준생에게 유익한 시간이었다고 생각한다. Intro 강의를 여는 질문이었던 '회사는 어떤 개발자를 뽑고 싶을까?'에 대한 답변을 서로 공유해보았다. 커뮤니케이션 능력이 좋은 사람, 개발을 잘 하는 사람, 개발에 대한 용어가 잘 정리되어 있는 사람과 같은 답변이 나왔다. 이런 질문을 계속 생각해보고, 내가 작성한 자기소개서도 이런 식으로 질문을 자꾸 던져봐야 한다고 하셨다. 협업 경험 1. 요즘 라이브 코딩을 하는 곳이 늘어나고 있는 추세다. 2. 면접에서 실무자와 실제로 같이 일하는 것처럼 페어 프로그래밍을 한다. 3. 현업에서 같은 화면..

TIL 2024.02.20

[Docker] 리눅스 환경에서 컨테이너 관리하고 실행하기

도커를 사용하여 여러 개의 컨테이너를 관리하고 실행해보았다. 이 실습은 세 개의 컨테이너를 사용한다. MySQL 컨테이너 (mysqldb): MySQL 데이터베이스를 실행하고 관리한다. fisa라는 데이터베이스에 activist, recipient, probono, probono_project라는 네 가지 테이블을 생성하고 데이터를 삽입한다. Oracle 컨테이너 (oracledb): Oracle 데이터베이스를 실행하고 관리한다. 이 컨테이너는 user01이라는 사용자와 관련된 설정을 사용하여 실행된다. Spring Boot 어플리케이션 컨테이너 (springbootapp): 스프링 부트 어플리케이션을 실행한다. 이 어플리케이션은 MySQL 데이터베이스와 연동하여 데이터를 조회하고 웹 페이지를 제공한다...

Infra 2024.02.16