| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
- sk 쉴더스 루키즈
- 서울청년문화패스
- 예술의 전당
- webhacking
- 프리코스
- 자바
- linux
- 웹개발
- 루키즈31기
- 우아한테크코스
- 우테코
- c
- 동적분석
- 애플리케이션 계층
- 코리안챔버오케스트라
- 알고리즘
- SK쉴더스
- 레나튜토리얼
- SK쉴더스루키즈
- Practical Malware Analysis Labs
- 백엔드
- 악성코드 분석
- 깃
- React
- 위상 정렬
- Dreamhack
- 진입차수
- 프랑스어 #프랑스어배우기 #프랑스어독학 #델프인강 #시원스쿨프랑스어 #delf독학 #델프 #프랑스어기초 #프랑스어공부
- sk쉴더스 루키즈
- 루키즈 31기
- Today
- Total
yon11b
[SK 쉴더스 루키즈] 애플리케이션: Flask, Opensearch 본문
Flask
- 경량 프레임 워크
- 기본은 요청/응답만 담당
- ORM, 인증, 폼은 확장 라이브러리 이용
- MVT 모델
from flask import Flask, url_for
app = Flask(__name__)
@app.route('/')
def hello():
'''
('/hello')로 접속하면 'Hello World!' 문자열을 응답한다.
'''
return 'Hello World!'
@app.route('/profile/<username>/')
def get_profile(username):
"""URL에 포함된 사용자 이름을 꺼내서 응답합니다."""
return 'profile : ' + username
@app.route('/hello/<string:name>/', methods=["GET"])
def hello_name(name):
"""/hello/이름 형태로 접속하면 이름을 포함한 인사말을 응답합니다."""
return f"Hello, {name}!"
if __name__ == '__main__':
with app.test_request_context():
print(url_for('get_profile', username='flask'))
app.run()

- Rest API 형태
OpenSearch
검색 엔진, 로그 분석용
RDB의 문제점. (왜 opensearch를 써야 할까?)
RDB가 못하는 일: 텍스트 검색
예시: query: 블투 이어폰 흰색 ——→ DB: ????
결과: 아무것도 못 찾음
(구버전)elasticsearch ⇒ opensearch
kibana ⇒ opensearch dashboards(시각화)
실습: Docker를 사용해서 Opensearch 3대 + dashboard 1개 구조를 만들어보자!
web: static
frontend: templates
backend: restX
DB: docker compose -> opensearch index에 저장
1. docker compose up -d
2. python3 app.py
docker compose 파일에는 어떤 것들이 있나?
1. opensearch 3대(아래 과정을 3번 반복)
- opensearch docker image 파일을 받아온다.
- data를 컨테이너 외부에 마운트한다.
- opensearch 초기 pw 설정을 명시한다.
2. dashboard 1개
- dashboard image를 받아온다.
app.py 파일에는 무슨 내용이 있나?
- 자동차 브랜드 생성, 조회, 삭제, 수정
- 자동차 모델명 생성, 조회, 삭제 수정
OpenSearch Dashboards
devtools를 사용해서 쿼리문을 실행시키고 결과를 볼 수 있다.

예제: post 로 데이터 넣기

Car 실습 예제

데이터 넣어주기
# 1) 브랜드 생성
curl -X POST http://127.0.0.1:5001/api/v1/brands/ \
-H "Content-Type: application/json" \
-d '{"name": "bentz"}'
# 2) 모델 추가
curl -X POST http://127.0.0.1:5001/api/v1/brands/bentz/models \
-H "Content-Type: application/json" \
-d '{"model_id":0,"name":"e-class","price":1000000,"fuel_type":"gasoline","fuel_efficiency":"9.1~13.2km/l","engine_power":"367hp","engine_cylinder":"I6"}'
내가 넣은 데이터 검색하기.

OpenSearch는 REST API 기반이고, _(언더스코어)로 시작하는 경로는 OpenSearch가 미리 정의해 둔 API 엔드포인트이다. 사용자가 만든 인덱스 이름이나 문서 ID와 구분하기 위해 언더스코어를 prefix로 붙이는 규칙이다.
몇 가지 사용예시들
- GET /my-index/_search → 검색 API
- GET /my-index/_count → 문서 개수 조회
- GET /_cat/indices → 인덱스 목록 조회
- GET /_cluster/health → 클러스터 상태 확인
- POST /my-index/_doc → 문서 색인
- GET /my-index/_search → 인덱스에 저장된 문서를 검색
'보안 > SK 쉴더스 루키즈' 카테고리의 다른 글
| [SK 쉴더스 루키즈] [CI/CD GOAT] White Rabbit 문제 Write up (0) | 2026.04.30 |
|---|---|
| [SK 쉴더스 루키즈] 애플리케이션 보안: OWASP 10, NodeGoat, bWAPP 실습 (0) | 2026.04.30 |
| [SK 쉴더스 루키즈] VPC endpoint (0) | 2026.04.22 |
| [SK 쉴더스 루키즈] User Data, S3 기초, IAM 정책 (0) | 2026.04.20 |
| [SK 쉴더스 루키즈] EBS 할당 & VPC 구성 (0) | 2026.04.16 |
