TÔI ĐÁNH GIÁ THỊ TRƯỜNG CNTT NĂM 2025 Cũng như năm 2024, thị trường ngành CNTT trong năm 2025 không có quá nhiều khởi sắc. Tuy nhiên, mình sẽ phân tích một số điểm lưu ý để các bạn nắm bắt được thị trường, đặc biệt đối với các bạn sinh viên đang chuẩn bị ra trường có cơ hội tốt hơn. Trước khi đi vào bài đọc, các bạn có thể tham khảo hai bài trước để nắm rõ thị trường trong những năm gần đây như thế nào nhé: Bài viết 1: Vì sao xuất hiện tình trạng layoff trong ngành CNTT? Bài viết 2: TÔI DÀNH 3 NGÀY ĐÁNH GIÁ THỊ TRƯỜNG CNTT CUỐI NĂM 2024 CHO BẠN. Mở đầu bài viết, ta cùng tìm hiểu về trending trên TrueUP xem như thế nào nhé (Nhắc lại cho các bạn thì TrueUp crawl các data từ các bài tuyển dụng của các tập đoàn công nghệ lớn) Như các bạn thấy thì sau đợt layoff vào năm 2023, xu hướng tuyển dụng đang dần phục hồi, tuy nhiên vẫn không quá lớn. Theo dữ liệu của Gartner, vốn đầu tư vào ngành IT sẽ tăng 57.4 tỷ đô, tương ứng 9.3% tăng trưởng so với cùng kỳ năm 2024. Về nguyên ...
Deploy project spring boot MIỄN PHÍ sử dụng render
Đối với những bạn sử dụng Spring boot vì mục đích học tập, nghiên cứu, thì việc chi nhiều tiền để chạy một server là không cần thiết. Trước đó, việc deploy miễn phí trên heroku là lựa chọn của rất nhiều học sinh, sinh viên. Tuy nhiên, công ty này đã cắt đi gói miễn phí vào ngày 28/11/2022, buộc người dùng phải trả phí để sử dụng. Ở bài viết này, mình sẽ hướng dẫn các bạn chạy một project spring boot nhỏ trên Render miễn phí. Cùng tìm hiểu nhé.
Yêu cầu và mô tả:
- Sử dụng IDE Intellij để dễ dàng package
- Tài khoản git
- Tài khoản render.
- Sử dụng MySQL và Mybatis để thực hiện tạo lập và quản lý CSDL.
1. Tạo một project spring boot
Truy cập vào trang https://start.spring.io/ và tạo một project spring boot như sau:
Group – com.8techblog
Artifact – App
Package name – com.8techblog.App
Packaging – Jar
Java – 17
Project – Gradle - Groovy (ở đây mình hướng dẫn build dùng gradle)
Language - Java
Đồng thời ở mục ADD DEPENDENCIES thêm một số thành phần
Spring Web
Lombok
Mybatis Framework
MySQL Driver
(Có thể thêm Thymeleaf hoặc Angular cho front end, ở đây mình chỉ dùng REST API để hiện thông tin)
Sau đó nhấn GENERATE.
Tải về, giải nén và mở bằng intellij.
(Trong project tại build.gralde nhớ thêm dòng trong
dependencies{
...
runtimeOnly 'com.mysql:mysql-connector-j'} nếu MySQL Driver chạy không được)
2. Tạo một database MySQL online
Sử dụng trang https://freedb.tech/ để tạo MySQL online miễn phí.
Dùng lệnh MySQL để tạo:
CREATE TABLE Users (username varchar(255),password varchar(255));INSERT INTO Users VALUE('8TECHBLOG','12345678');
Điều chỉnh và tạo các file sau.
AppApplication.java
package com.techblog.App;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
@SpringBootApplication(exclude= DataSourceAutoConfiguration.class)
public class AppApplication {
public static void main(String[] args) {
SpringApplication.run(AppApplication.class, args);
}
}
Tạo file mybatis-config.xml trong thư mục main/resources như sau.
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<typeAliases>
<typeAlias alias = "Users" type = "com.techblog.App.models.Users"/>
</typeAliases>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://sql.freedb.tech:3306/freedb_8techblog?allowPublicKeyRetrieval=true&useSSL=false"/>
<property name="username" value="freedb_techblog"/>
<property name="password" value="X$CaRNU5Qa%7YvW"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/example/mapper/sql/UsersMapper.xml"/>
</mappers>
</configuration>
Với url, username và password theo database mình tạo.
<?xml version = "1.0" encoding = "UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.techblog.App.mappers.UserMapper" >
<resultMap id = "result" type = "com.techblog.App.models.Users">
<result property = "username" column = "username"/>
<result property = "password" column = "password"/>
</resultMap>
<select id="getUserByUsernameAndPassword" resultMap="result">
SELECT * FROM Users WHERE username = #{username} AND password = #{password};
</select>
</mapper>
Tạo hai thư mục models và mappers
package com.techblog.App.mappers;
import com.techblog.App.models.Users;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Component;
@Component
@Mapper
public interface UserMapper {
public Users getUserByUsernameAndPassword(@Param("username") String username, @Param("password") String password);
}
Với class Users như sau
package com.techblog.App.models;
import lombok.Data;
@Data
public class Users {
String username;
String password;
}
Với class MySqlSessionFactory như sau
package com.techblog.App.mappers;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.io.IOException;
import java.io.InputStream;
@Configuration
public class MySqlSessionFactory {
@Bean
public SqlSessionFactory startSqlSession() {
String resource = "mybatis-config.xml";
InputStream inputStream = null;
try {
inputStream = Resources.getResourceAsStream(resource);
} catch (IOException e) {
e.printStackTrace();
}
SqlSessionFactory sqlSessionFactory =
new SqlSessionFactoryBuilder().build(inputStream);
return sqlSessionFactory;
}
}
package com.techblog.App.controller;
import com.techblog.App.mappers.MySqlSessionFactory;
import com.techblog.App.mappers.UserMapper;
import com.techblog.App.models.Users;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("8techblog/users")
public class TechBlogController {
@GetMapping
public Users findAllCustomers(){
MySqlSessionFactory msf = new MySqlSessionFactory();
SqlSessionFactory sessionFactory = msf.startSqlSession();
Users user = null;
try(SqlSession session = sessionFactory.openSession()){
UserMapper userMapper = session.getMapper(UserMapper.class);
user = userMapper.getUserByUsernameAndPassword("8techblog", "12345678");
}
return user;
}
}
Cấu trúc thư mục sẽ như sau
4. Package thành file jar và chạy kiểm thử
IDE Intellij hỗ trợ sẵn cho chúng ta công cụ giúp package một project maven hoặc gradle thành dạng .jar (Bạn vẫn có thể tải mvn hoặc gradle rồi dùng terminal thực thi để build file .jar, tuy nhiên sẽ dễ bị lỗi)
Bạn chọn App > build > build
Chúng ta mở terminal (Alt + F12) và thực thi lệnh để chạy kiểm thử file jar
java -jar build/libs/App-0.0.1-SNAPSHOT.jar
Mở trình duyệt và truy cập localhost:8080/8techblog/users để kiểm tra kết quả.
5. Tạo Dockerfile
Vì Render chạy trên Docker, nên ta cần tạo một Dockerfile để yêu cầu render thiết lập một image cho file jar.
Tại root của project, tạo file tên Dockerfile và ghi nội dung setup như sau.
FROM eclipse-temurin:17-jdk-alpine
VOLUME /tmp
COPY build/libs/*.jar App-0.0.1-SNAPSHOT.jar
ENTRYPOINT ["java","-jar","/App-0.0.1-SNAPSHOT.jar"]
EXPOSE 8080
6. Đẩy project lên Github
Sử dụng git hoặc github desktop để đẩy project của bạn lên Github. Ở đây mình hướng dẫn dùng git với terminal trên Intellij.
Mở .gitignore và xóa dòng sau để github có thể đưa file jar vào git
build/
!gradle/wrapper/gradle-wrapper.jar
!**/src/main/**/build/
!**/src/test/**/build/
Sau đó tại terminal (Alt + F12), nhập lệnh git như sau.
git remote rm origin
git remote add origin https://github.com/lecongdien2000/8techblog-springbot.git
git branch -M main
git push -u origin main
Với đường dẫn https là đường dẫn github trống bạn đã tạo trước đó
7. Deploy project trên Render
Tạo tài khoản render.com, liên kết với tài khoản Github, và thực hiện deploy.
Chọn New > Web Service
Chọn Build and deploy from a Git repository
Chọn repo bạn đã tạo. Ở đây mình chọn 8techblog-springbot (gõ nhanh nên sai chính tả thông cảm nhé :>)
Nhập vài thông tin cơ bản, và bắt đầu tạo
Chờ một lát và server đã deploy thành công.
Nhận xét
Đăng nhận xét