기타 41

[작업 기록] Single AZ -> Multi AZ 구성 변경

개요 AWS 환경에서 운영하는 서비스 중 하나가 Single AZ로 구성되어 있는 것을 알게 되었다. 인프라 관련 담당자에 의하면 기존에 IP 대역이 부족해서 단일로 구성했었고, 이후에 IP 대역 추가 작업이 있었다고 한다. 이에 따라 예기치 않은 사고로 서비스 장애가 발생할 가능성을 줄이기 위해 Multi AZ로 구성을 변경하려고 한다. 업무 역할 상 AWS 구성을 직접 관리하지는 못했으나…… 비슷한 작업을 할 때 참고할 수 있도록 어떤 순서로 진행했는지 기록해둔다. + 참고로 동작하고 있던 서비스는 Airflow와 Tomcat(API 서버)이다. 구성도 정확하진 않지만…… 기존 구성도는 대략 다음과 같다. 운영계이므로 Public Subnet과 Database 쪽 Subnet은 HA로 구성되어 있었지..

기타 2024.04.24

[Excel] 파워 쿼리 - 테이블 교차 조인 수행하기

개요 Excel을 이용해 두 개의 표에 대해 교차 조인을 수행하고 싶다. Excel에서 제공하는 파워 쿼리 기능을 사용해 두 테이블을 합쳐보자. 표 만들기 데이터 범위를 선택하고 키보드로 ctrl + t를 입력해 표로 만든다. 확인 버튼을 클릭하면 아래와 같이 표로 변환된다. 다른 테이블도 동일하게 표로 생성한다. Query 생성 표를 Power Query에서 다를 수 있도록 쿼리를 생성한다. 생성한 표를 선택한 상태에서 상단 메뉴의 데이터 > 데이터 가져오기 및 변환 > '테이블/범위에서' 버튼을 클릭한다. 쿼리를 구분할 수 있도록 적당한 이름을 지정하고 상단 메뉴에서 홈 > 닫기 및 로드 > 닫기 및 다음으로 로드 버튼을 클릭한다. 연결만 만들기를 선택하고 확인 버튼을 클릭한다. 그러면 화면 오른쪽 ..

기타 2024.03.05

[NAS] Synology NAS - 차단된 IP 해제

개요 Synolgy NAS에 접속하려고 했더니 아래 그림과 같이 IP 차단 안내 메시지와 함께 접속이 되지 않았다. 로그인 실패 횟수가 많아서 차단된 것으로 보이는데, 해제하는 방법에 대해 정리한다. 자동 차단 Synology NAS에서 제공하는 자동 차단 기능은 로그인 시도 실패 횟수가 너무 많은 클라이언트의 IP 주소를 차단하여 보안을 향상하는 것을 목적으로 한다. 지정한 시간(분) 내에 지정한 로그인 시도 실패 횟수를 초과하는 경우, 로그인을 시도한 IP를 자동으로 차단하는 방식으로 동작한다. 무차별 공격으로 계정 정보가 유출되는 위험을 줄여준다. 차단 IP 해제 차단된 IP를 해제하는 방법은 아래와 같다. 1. Synology NAS 접속 > 제어판 > 보안으로 이동 만약 제어판 아이콘 목록에서 ..

기타 2023.04.29

[Python] OpenAI API 사용하기

개요 최근 OpenAI가 개발한 ChatGPT가 굉장히 화제가 되고 있는데, 이 글에서는 Python과 OpenAI API를 이용해 ChatGPT와 대화하는 간단한 프로그램을 작성해보려고 한다. openai 계정이 필요하므로 회원가입부터 진행한다. 회원가입/로그인 https://platform.openai.com/에 접속하여 회원가입 또는 로그인한다. 회원가입 시 전화번호 인증이 필요하다. 크레딧 확인 API를 호출할 때마다 비용이 발생한다. 회원가입을 하면 무료 크레딧이 기본적으로 부여된다. 부여된 크레딧은 오른쪽 상단 Personal > Manage account로 이동하여 확인할 수 있다. API 키 발급 오른쪽 상단 Personal > View API keys로 접근하여 API를 호출할 때 사용할..

기타 2023.04.17

서버리스 (Serverless) 란?

Serverless 개발자가 서버를 관리할 필요 없이 애플리케이션을 빌드하고 실행할 수 있도록 하는 클라우드 네이티브 개발 모델 서버리스 모델 역시 물리적 서버가 존재하지만 클라우드 제공 업체(CSP)가 인프라에 대한 프로비저닝, 유지 관리, 스케일링 등의 작업을 처리하여 추상화되어 있다. 온프레미스, IssS 모델 환경에서 개발자/서비스 제공자는 서비스 제공에 필요한 인프라 자원을 사전에 구매하여 준비한 뒤 동작 시키는 과정이 필요했다. 또한 서비스 부하에 따라 인프라 자원을 스케일링하는 것 또한 개발자의 몫이다. 반면 서버리스 모델에서는 인프라 자원을 동적으로 할당하기 때문에 서비스가 대기 상태에 있다가 실제 요청이 들어오면 인프라 자원을 할당하여 서비스를 처리한 뒤 자원을 해제한다. 인프라 자원이 ..

기타 2023.03.17

쿼리 엔진(Query Engine) 이란

Query Engine 데이터베이스 또는 서버 위에 배치되어 해당 데이터베이스 또는 서버 내 데이터에 대한 쿼리를 실행하여 사용자 또는 애플리케이션에 답변을 제공하는 소프트웨어 그중에서도 SQL 쿼리 엔진은 SQL 명령과 언어를 해석해 관계형 데이터베이스에 접근한다. 대부분 CRUD 작업을 수행하고 관계형 데이터 모델과 데이터베이스 관리 시스템에 필요한 데이터 정책을 적용한다. 모든 데이터베이스에는 가장 널리 퍼진 쿼리 언어인 SQL(Structured Query Language)을 지원하는 쿼리 엔진이 포함되어 있다. 이점 데이터 이동 없이 데이터를 쿼리 엔진에 가져올 수 있다. 분산 SQL 쿼리 엔진을 사용하면 Hadoop, AWS S3, NoSQL, MySQL 등과 같은 다양한 데이터 소스로부터 데..

기타 2023.02.28

[JMESPath] JSON 쿼리 기본 - 2

개요 2022.09.26 - [JMESPath] JSON 쿼리 기본 - 1 2022.09.27 - [JMESPath] Projections 에 이어서 남은 문법을 정리해둔다. Pipe Expressions Projections 결과인 JSON 배열이 아니라 그 배열의 특정 요소만을 원할 때 사용할 수 있다. # JSON { "people": [ {"first": "James", "last": "d"}, {"first": "Jacob", "last": "e"}, {"first": "Jayden", "last": "f"}, {"missing": "different"} ], "foo": {"bar": "baz"} } 위의 JSON 데이터에서 사람의 이름을 출력하는 표현식과 그 결과는 아래와 같다. # peop..

기타 2022.09.28

[JMESPath] Projections

Projections JMESPath의 주요 기능 중 하나로, 요소의 집합에 식을 적용할 수 있게 한다. Projections 종류는 5가지로 나눌 수 있다. List Projections Slice Projections Object Projections Flatten Projections Filter Projections 2022.09.27 - [JMESPath] Projections에 이어서 살펴보도록 하자. List and Slice Projections List Projections은 와일드카드 표현식에 의해 만들어진 JSON 배열에 적용된다. # JSON { "people": [ {"first": "James", "last": "d"}, {"first": "Jacob", "last": "e"},..

기타 2022.09.27

[JMESPath] JSON 쿼리 기본 - 1

JMESPath JMESPath는 JSON 쿼리 언어로, JSON 데이터에서 요소를 추출하고 변환할 수 있다. Python, PHP, JavaScript, Ruby, Lua, Go 등을 지원한다. aws cli의 --query 옵션에서 사용하는데, 이 글에서는 간단히 문법을 정리해두려고 한다. 기본 표현식 JMESPath는 JSON의 키를 이용해 값을 식별한다. # JSON { "a": "foo", "b": "bar", "c": "baz" } # 표현식 b # 결과 bar 하위 표현식 하위 요소는 .을 이용해 접근한다. # JSON { "a": { "b": { "c": { "d": "value" } } } } # 표현식 a.b.c.d # 결과 value 존재하지 않는 키를 참조하면 null을 반환한다. ..

기타 2022.09.26

[HTTP] Method 종류

HTTP Method HTTP 메서드는 클라이언트가 서버에게 주어진 리소스에 무엇을 하길 원하는지를 나타낸다. 2022.09.17 - [Flask] REST API 만들기에서 간단히 정리했지만, 이 글에서는 각 메서드를 그림과 함께 정리한다. GET 서버에 Resource를 요청한다. 가장 일반적인 메서드로, URI 형식으로 요청한다. HEAD GET과 비슷하지만 header 정보만을 요청한다. 즉, 응답 body를 반환받지 않는다. HEAD 메서드는 아래의 경우에 사용한다. Resource를 받지 않고 찾기만을 원할 때 객체가 존재할 경우 응답의 상태 코드를 확인할 때 서버의 응답 헤더를 봄으로써 Resource가 수정되었는지를 확인할 때 POST 클라이언트가 요청 데이터를 HTTP Body에 담아 서..

기타 2022.09.22
1 2 3 4 5