아키텍처 개요
AWS BLAST Performance Testing Architecture
Architecture Overview
┌─────────────────────────────────────────────────────────────┐
│ AWS Cloud (ap-northeast-2) │
│ │
┌──────────────┐ │ ┌─────────────────────────────────────────────────────┐ │
│ │ │ │ VPC │ │
│ User │ │ │ │ │
│ (Client) │────────────────────┼──┤ ┌───────────────────────────────────────────────┐ │ │
│ │ │ │ │ Private Subnets │ │ │
└──────────────┘ │ │ │ │ │ │
│ │ │ ┌─────────────────────────────────────────┐ │ │ │
│ │ │ │ AWS Batch │ │ │ │
│ │ │ │ │ │ │ │
│ │ │ │ ┌──────────────────────────────────┐ │ │ │ │
│ │ │ │ │ Compute Environment │ │ │ │ │
│ │ │ │ │ (blast-high-memory-ce) │ │ │ │ │
│ │ │ │ │ │ │ │ │ │
│ │ │ │ │ ┌────────────┐ ┌────────────┐ │ │ │ │ │
│ │ │ │ │ │r6i.24xlarge│ │r7i.24xlarge│ │ │ │ │ │
│ │ │ │ │ │ 96 vCPU │ │ 96 vCPU │ │ │ │ │ │
│ │ │ │ │ │ 768GB RAM │ │ 768GB RAM │ │ │ │ │ │
│ │ │ │ │ └────────────┘ └────────────┘ │ │ │ │ │
│ │ │ │ │ maxvCpus: 384 │ │ │ │ │
│ │ │ │ └──────────────────────────────────┘ │ │ │ │
│ │ │ │ │ │ │ │ │
│ │ │ │ ┌──────────────────────────────────┐ │ │ │ │
│ │ │ │ │ Job Queue │ │ │ │ │
│ │ │ │ │ (blast-high-memory-queue) │ │ │ │ │
│ │ │ │ │ Priority: 100 │ │ │ │ │
│ │ │ │ └──────────────────────────────────┘ │ │ │ │
│ │ │ │ │ │ │ │ │
│ │ │ │ ┌──────────────────────────────────┐ │ │ │ │
│ │ │ │ │ Job Definition │ │ │ │ │
│ │ │ │ │ (blast-high-memory-test:1) │ │ │ │ │
│ │ │ │ │ 64 vCPU, 512GB Memory │ │ │ │ │
│ │ │ │ │ │ │ │ │ │
│ │ │ │ │ Container: NCBI BLAST+ │ │ │ │ │
│ │ │ │ │ (ncbi/blast:latest) │ │ │ │ │
│ │ │ │ └──────────────────────────────────┘ │ │ │ │
│ │ │ │ │ │ │ │
│ │ │ └─────────────────────────────────────────┘ │ │ │
│ │ │ │ │ │ │
│ │ │ │ EFS Mount │ │ │
│ │ │ ▼ │ │ │
│ │ │ ┌─────────────────────────────────────────┐ │ │ │
│ │ │ │ Amazon EFS │ │ │ │
│ │ │ │ (fs-0d2d032d1cca25f3f) │ │ │ │
│ │ │ │ │ │ │ │
│ │ │ │ Mount: /mnt/efs │ │ │ │
│ │ │ │ Database: /mnt/efs/nt/core_nt │ │ │ │
│ │ │ │ (NCBI NT Core Database) │ │ │ │
│ │ │ └─────────────────────────────────────────┘ │ │ │
│ │ │ │ │ │
│ │ └────────────────────────────────────────────────┘ │ │
│ │ │ │
│ └──────────────────────────────────────────────────────┘ │
│ │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ Amazon S3 │ │
│ │ │ │
│ │ ┌─────────────────────────────────────────────────┐ │ │
│ │ │ blast-perf-test-queries-664263524008 │ │ │
│ │ │ │ │ │
│ │ │ /queries/ │ │ │
│ │ │ ├── query.fasta (500 seqs, 75KB) │ │ │
│ │ │ ├── query_5000.fasta (5,000 seqs, 755KB) │ │ │
│ │ │ ├── query_50000.fasta (50,000 seqs, 7.4MB) │ │ │
│ │ │ └── query_500000.fasta (500,000 seqs, 74MB) │ │ │
│ │ │ │ │ │
│ │ │ /results/ │ │ │
│ │ │ └── {job_id}/output.txt │ │ │
│ │ └─────────────────────────────────────────────────┘ │ │
│ └──────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘
Component Details
AWS Batch Components
| Component | Name | Configuration |
|---|---|---|
| Compute Environment | blast-high-memory-ce |
EC2, MANAGED, maxvCpus: 384 |
| Job Queue | blast-high-memory-queue |
Priority: 100 |
| Job Definition | blast-high-memory-test:1 |
64 vCPU, 512GB Memory |
EC2 Instance Types
| Instance Type | vCPU | Memory | Hourly Cost |
|---|---|---|---|
| r6i.24xlarge | 96 | 768 GB | $7.776 |
| r7i.24xlarge | 96 | 768 GB | $8.1648 |
Storage
| Service | Resource | Purpose |
|---|---|---|
| Amazon EFS | fs-0d2d032d1cca25f3f | BLAST NT Core Database |
| Amazon S3 | blast-perf-test-queries-664263524008 | Query files & Results |
BLAST Configuration
blastn \
-query /tmp/query.fasta \
-db /mnt/efs/nt/core_nt \
-out /tmp/output.txt \
-outfmt 6 \
-num_threads 64 \
-evalue 1e-5
Performance Test Results
| Query Sequences | Execution Time | EC2 Cost | Cost per 1000 Sequences |
|---|---|---|---|
| 500 | 3m 56s | $0.51 | $1.02 |
| 5,000 | 4m 46s | $0.62 | $0.12 |
| 50,000 | 5m 59s | $0.78 | $0.016 |
| 500,000 | 25m 9s | $3.27 | $0.0065 |
Performance Insights
- Batch Processing Efficiency: Per-sequence processing time decreases significantly with larger batches
- Fixed Overhead: ~4 minutes baseline for job initialization and database loading
- Scaling: 1000x more sequences only takes ~6x longer (excellent scaling)
- Cost Efficiency: Cost per sequence decreases by ~157x from 500 to 500,000 sequences
Data Flow
┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ S3 │ │ AWS Batch │ │ EC2 │ │ EFS │
│ (queries) │────▶│ Job Queue │────▶│ Instance │────▶│ (BLAST DB) │
└─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘
│
│ BLAST Search
▼
┌─────────────┐
│ S3 │
│ (results) │
└─────────────┘
Workflow Steps
- Input: Query FASTA file uploaded to S3
- Submit: Job submitted to AWS Batch Job Queue
- Schedule: Batch schedules job on Compute Environment
- Launch: EC2 instance launched with EFS mount
- Download: Container downloads query from S3
- Execute: BLAST search against NT Core database on EFS
- Upload: Results uploaded to S3
- Cleanup: EC2 instance terminated
Region: ap-northeast-2 (Seoul)
No comments to display
No comments to display