IT 39

[AWS S3] AWS S3 Key path 설계

0. Table Of Contents 0. Table Of Contents 1. 설계 배경 2. 고려해야할 항목 3. AWS S3 Reference 분석 3.1. 문제상황 예시 3.2. 문제상황 해결 4. 실전 적용 5. 결론 및 느낀점 6. Reference 1. 설계 배경 개인 프로젝트를 진행하던 도중 업로드한 개인 프로필 사진을 저장해야하는 기능을 개발하게 되었다. 프로필 사진을 저장하고 불러오는 단계에서 최대한의 성능을 내게 하고자 고민하게 되었다. 2. 고려해야할 항목 사진파일이 올라갈 때 너무 큰 크기의 사진이 올라가게 되면 돈을 많이 내게 된다. 사진 파일이 올라간 aws s3경로를 보고 이 사진이 어떤 사진인지 확실하게 알면 좋다. AWS S3도 내부적으로 파일을 찾을 때 성능적인 문제가 ..

IT/Cloud 2021.09.02

[FaaS Service] FaaS Service를 사용시 주의해야할 점

0. Table Of Contents 0. Table Of Contents 1. Coldstart 2. Stateless Environment 3. 한도 1. Coldstart FaaS Service는 쓰지 않는 상태일 때는 function instance 대기 상태가 아닌 생성되지 않은 상태로 유지되다가 request가 들어올 경우, function instance가 생성되며 이에 대한 요청을 핸들링하기 시작한다. 이 때, request를 handling할 instance가 없으면 delay가 생길 수 있다. cloud function은 다음과 같은 경우 새로운 함수 인스턴스가 생성된다. cloud function을 새로 배포할 경우 auto scaling으로 인해 확장되는 경우 긴 시간동안 funct..

IT/Cloud 2021.07.16

[Docker-Compose]Docker-Compose env parsing error로 인한 삽질기록

0. Table Of Contents 0. Table Of Contents 1. 문제 현황 분석 1.1. 문제 상황 1.2. 기존 docker version과 upgrade한 docker version 1.3. 프로젝트 폴더 구조 1.4. 명령어 call 순서 1.5. 주요 파일 구성 확인 2. 문제 해결 삽질 2.1. 문제 해결을 위한 searching 2.2. 문제 디버깅 2.3. 디버깅내용이 맞는지에 대한 검증 2.4. 최종 문제 해결 flow 3. 삽질을 통해 얻은 결론 및 개인적인 프로젝트 구조에 대한 회고 4. Reference 1. 문제 현황 분석 1.1. 문제 상황 docker version을 업그레이드 하고 나서 다음과 같이 잘 되던 .env file parsing이 잘 되지 않는 오류가..

IT/Cloud 2021.06.24

[Middleware] ASGI(Asynchronous Server Gateway Interface) vs WSGI(WebSErver Gateway Interface)

0. Table Of Content 0. Table Of Content 1. Server Gateway Interface가 왜 필요한가? 2. WSGI (Web Server Gateway Interface) 3. ASGI (Asynchronous Server Gateway Interface) 3.1. 기존 WSGI에는 어떤 문제점이 있었는가? 3.2. ASGI는 어떤 방식으로 WSGI의 문제점을 해결했는가? 3.3. 간단한 ASGI Application 예제 4. Reference 1. Server Gateway Interface가 왜 필요한가? 일반적으로 우리가 보고 있는 웹 서비스는 브라우저를 통해서 흘러나온 웹서버의 내용들이다. 대부분의 어플리케이션의 경우 웹과 소통하는 미들웨어를 가장 널리 사용되..

IT/미들웨어 2021.02.17

[Spring] 순차적 프로세스의 비동기식 프로세스로의 전환 삽질

1. 서론 및 얽힌 이야기 내부 시스템에 대해 지속적으로 healthCheck를 하는 Spring Boot기반 서비스를 개발한 적이 있다. DB에 등록된 시스템 리스트를 가져와 순차적으로 healthCheck를 실행하는 방식의 서비스이다. 그러나, 10/12 HealthCheck Target별로 HealthCheck 시점의 정합성이 맞지 않는 문제가 발생하였다. 문제 상황 서술 전에 적용중인 시스템 아키텍처 및 HealthChecker 서비스에 대한 개요를 먼저 풀어본다. A Group의 WAS에 대해 배포를 진행하였다. 배포가 진행되면, 해당 인스턴스로의 직접적인 호출에 대해서는 동작하지 않게 된다. static file을 제외한 모든 경로에 대해서 reverse proxy를 통하여 데이터가 was로 ..

IT/Java Spring 2020.10.14

[OpenSource] Apache Kafka

Table of content 1. What is the Apache Kafka 2. Benefits of Apache Kafka 3. Apache Kafka 아키텍처 3.1. 주체 단위 아키텍처 3.1.1. Producer 3.1.2. Broker 3.1.3. Zookeeper 3.2. 데이터 단위의 아키텍처 3.2.1. Topic 3.2.2. Partition 3.2.3. Offset 4. Failover 과정 5. 가장 이상적인 Kafka 아키텍처 1. What is the Apache Kafka Apache Kafka는 대량의 데이터를 처리할 수 있으며, 엔드포인트간 메시지를 전달 할 수 있는 분산 발행-구독 메시징 시스템이다. Kafka 메시지는 스토리지에 유지되고 데이터 복제를 통해 데이터 손..

IT/OpenSource 2020.09.07

[HikariCP] Possibly consider using a shorter maxLifetime value

Table Of Contents 0. 서론 1. Connection Pool이 무엇인가 2. Connection Pool이 왜 필요한가? 3. HikariCP의 주요 파라미터 4. 문제 분석 5. 후기 및 조치 6. 참고 문헌 클릭하시면 해당 content로 넘어갑니다. 0. 서론 지난주, 플랫폼 각 내부의 엔드포인트를 호출하여 각 서비스 및 데이터베이스가 살아있는지에 대해 모니터링 하는 Spring Boot Application에서 다음과 같은 에러 메시지를 보았다. [WARN ] 2020-07-30 16:43:39 299545737 [PoolBase.java][isConnectionAlive](184) : HikariPool-1 - Failed to validate connection org.mari..

IT/Java Spring 2020.08.12

[Spring] Factory Design Pattern

0. Table Of Content 1. 서론 2. Factory Pattern이란 무엇인가 2.1. Factory Parrern 예제 3. Factory Pattern 사용으로 얻을 수 있는 기대 효과 4. 실무에서 적용한 코드 일부 5. 후기 1. 서론 배치 프로세스에 대한 공통 프레임워크를 담당하여 작업을 진행하고 있었다. Spring Batch Starter를 사용하여 작업을 진행하는 것이 가장 효율적이었지만, 기존 만들어진 테이블에 맞춰야 했기 때문에 해당 테이블에 맞게 배치 프레임워크를 새로 개발하게 되었다. 프레임워크에서 build된 결과물인 jar파일은 crontab에 등록이 되어 jar 실행 시 입력받은 augument값으로 해당 batch job이 실행되어야 하기 때문에, 입력 argu..

IT/Java Spring 2020.08.06

[삽질 프로젝트 계획] 티스토리 유입자 대시보드 만들기 - 밑그림

1. 대시보드에서 나타내야 할 것 - 기간에 따른 사용자 수 - 인기글 리스트 - 유입 경로 및 채널 - 유입 키워드 - 유입자 현황 차트 (척도 : 기간, Refere URL, 컨텐츠, 디바이스) 2. 추가 구현하고 싶은 것 - 전날 유입자 통계를 카카오톡으로 알림 받기 - 현재 학습하고 있는 OAuth2.0을 이용하여 대시보드 사이트 인증 - 일일 평균 유입자 현황 - 현재 기능별로 레포지토리가 분리되어있고, kafka broker에 다양한 로그들을 수집할 예정이기 때문에 향후 kubernetes를 적용할 예정 3. 사용할 기술 - DB : DynamoDB or MongoDB (조회성이 많기 때문에 RDB보다 NOSQL이 낫다고 판단) with JPA - Message Broker : Apache K..

IT/삽질 로그 2020.06.16

[삽질 프로젝트 설계] 티스토리 유입자 대시보드 만들기 - NOSQL 설계 초안

1. https://json.geoiplookup.io 오픈소스 - 위 링크를 통해 가져 올 수 있는 데이터의 목록은 다음과 같다. ( { "ip":"-", "isp":"-", "org":"", "hostname":"-", "latitude":-, "longitude":-, "postal_code":"", "city":"-", "country_code":"KR", "country_name":"South Korea", "continent_code":"AS", "continent_name":"Asia", "region":"Seoul", "district":"-", "timezone_name":"Asia\/Seoul", "connection_type":"Corporate", "asn_number":3786, ..

IT/삽질 로그 2020.06.09