In the fast-paced world of stock market analysis, where every tick of the clock can mean profit or loss, having the right tools at your disposal is crucial. For technical analysts, who rely heavily on data-driven insights, the "Technical Analyst Stock Markets" application can be a game-changer. However, to ensure that this application delivers real-time data and insights seamlessly, it must be deployed on a robust and scalable platform. This is where Amazon Web Services (AWS) and its Elastic Compute Cloud (EC2) service come into play.
Deploying a powerful Streamlit app on AWS EC2 using Visual Studio Code (VSC) ensures that the application is not only functional but also scalable, secure, and ready for production. Let's embark on this step-by-step journey of deploying the "Technical Analyst Stock Markets" application on AWS.
The Journey Begins: Launching an EC2 Instance
Our deployment journey begins with launching an EC2 instance, the foundation of any scalable application on AWS. Imagine yourself in the AWS Management Console, where you navigate to the EC2 dashboard with the goal of setting up a production-grade instance that will host your Streamlit app.
Step 1: Choose an AMI and Instance Type
You start by selecting the Ubuntu Server 22.04 LTS Amazon Machine Image (AMI). This choice is crucial as Ubuntu provides long-term support, ensuring stability and reliability for your application. Next, you choose the instance type. For initial testing, a t2.micro instance might suffice, but anticipating the load your application will handle once live, you opt for a t3.medium instance. This instance type provides a good balance of compute power and memory, making it ideal for handling the demands of a real-time analytics app.
Step 2: Configure Instance Details
You proceed to configure the instance details, making sure to enable the Auto-assign Public IP option. This step is vital as it ensures your instance will be accessible over the internet, allowing users to interact with your app.
Step 3: Set Up Security Groups
Security is paramount. You create a security group that opens port 22 for SSH access, which is necessary for managing your instance remotely. You also open port 8080 for the Streamlit app, allowing users to access the application via a web browser. A single misconfiguration here could expose your app to vulnerabilities, so you double-check every setting before proceeding.
Satisfied with your configurations, you launch the instance and download the SSH key pair that will allow you to securely connect to the EC2 instance.
Connecting the Dots: Accessing EC2 via Visual Studio Code
With your EC2 instance up and running, the next task is to connect to it. Visual Studio Code (VSC) comes into play here, not just as an Integrated Development Environment (IDE) but as a bridge between local development and cloud deployment.
Step 4: Install the Remote - SSH Extension
In VSC, you install the Remote - SSH extension. This extension allows you to manage your EC2 instance directly from within VSC, streamlining the development and deployment process.
Step 5: Connect to EC2
You initiate a new SSH connection in VSC using the SSH key pair you downloaded earlier. The connection string is something like ec2-user@<EC2_PUBLIC_IP>
. Once connected, the command line interface of your EC2 instance is accessible right from VSC, making it feel like an extension of your local environment.
Building the Foundation: Setting Up Python on EC2
Now that you’re connected to your EC2 instance, it’s time to prepare the environment for your Streamlit app.
Step 6: Update and Upgrade the System
The first command you run is to update and upgrade the system packages. This ensures that your instance has the latest security patches and software updates, providing a stable foundation for your deployment.
sudo apt-get update
sudo apt-get upgrade -y
Step 7: Install Python and Virtual Environment
Next, you install Python, which is the backbone of your Streamlit app. Alongside Python, you also install python3-venv
to create a virtual environment that isolates your app’s dependencies from the system’s global Python environment.
sudo apt-get install python3-pip python3-dev -y
sudo apt-get install python3-venv -y
Step 8: Clone the Repository and Set Up the Environment
With Python installed, you clone your app’s repository from GitHub. After navigating to the app’s directory, you create and activate a virtual environment.
git clone https://github.com/vanhoangkha/Technical-Analyst-Stock-Markets.git
cd Technical-Analyst-Stock-Markets
python3 -m venv env
source env/bin/activate
Once the virtual environment is active, you install the required Python packages listed in the requirements.txt
file.
pip install -r requirements.txt
The Moment of Truth: Deploying and Running the Streamlit App
With the environment ready, it’s time to deploy the application.
Step 9: Run the Streamlit App
You run the Streamlit app on port 8080. This is the moment where all your preparations come together.
streamlit run Home.py --server.port 8080
In your web browser, you enter the public IP of your EC2 instance followed by :8080
and press Enter. The "Technical Analyst Stock Markets" app loads, displaying a sleek interface with real-time stock market data and analytics.
Fortifying the Castle: Configuring EC2 for Production
Deploying the app is only half the battle. To ensure your application is truly production-ready, you must configure the EC2 instance for long-term use.
Step 10: Use Nohup to Keep the App Running
You use nohup
to keep the Streamlit app running in the background, even after you close the SSH session.
nohup streamlit run Home.py --server.port 8080 &
Step 11: Implement Security and Monitoring
To secure your application, you consider setting up Nginx as a reverse proxy, which will enable SSL for secure HTTPS connections. Additionally, you configure AWS CloudWatch to monitor the instance’s performance, ensuring that any issues are promptly addressed.
Step 12: Optimize Costs
Finally, to optimize costs, you implement a strategy to stop the EC2 instance when it’s not in use, reducing unnecessary expenses. You also explore the possibility of using Spot Instances to further cut down on costs while maintaining scalability.
Conclusion
As you close your browser and reflect on the journey, you realize that deploying the "Technical Analyst Stock Markets" app was more than just a technical task. It was about building a robust, secure, and scalable environment capable of delivering real-time insights to analysts who depend on them. Every step, from launching the EC2 instance to configuring it for production, was a crucial part of the process. The app is now live, ready to help analysts navigate the complexities of the stock market, turning data into actionable insights. This journey is a testament to the power of cloud computing and the impact it can have on the financial world.