diff --git a/pkg/application/evaluation_project/project_service.go b/pkg/application/evaluation_project/project_service.go
index 20c11d0..10076c0 100644
--- a/pkg/application/evaluation_project/project_service.go
+++ b/pkg/application/evaluation_project/project_service.go
@@ -2,6 +2,7 @@ package service
 
 import (
 	"fmt"
+	"gitlab.fjmaimaimai.com/allied-creation/performance/pkg/infrastructure/xredis"
 	"strconv"
 	"strings"
 	"time"
@@ -501,6 +502,15 @@ func (rs *EvaluationProjectService) List(in *command.QueryProjectCommand) (inter
 }
 
 func (rs *EvaluationProjectService) Activate(in *command.ActivateProjectCommand) (interface{}, error) {
+	lock := xredis.NewLockProjectId(int(in.Id))
+	err := lock.Lock()
+	if err != nil {
+		return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
+	}
+	defer func() {
+		lock.UnLock()
+	}()
+
 	transactionContext, err := factory.ValidateStartTransaction(in)
 	if err != nil {
 		return nil, err
diff --git a/pkg/infrastructure/xredis/redis_lock_project.go b/pkg/infrastructure/xredis/redis_lock_project.go
new file mode 100644
index 0000000..fe7bb0b
--- /dev/null
+++ b/pkg/infrastructure/xredis/redis_lock_project.go
@@ -0,0 +1,26 @@
+package xredis
+
+import (
+	"fmt"
+
+	"github.com/go-redsync/redsync/v4"
+)
+
+type LockProjectId struct {
+	m *redsync.Mutex
+}
+
+func NewLockProjectId(id int) *LockProjectId {
+	key := fmt.Sprintf("performance:project_id:%d", id)
+	return &LockProjectId{
+		m: rsync.NewMutex(key),
+	}
+}
+
+func (lk *LockProjectId) Lock() error {
+	return lk.m.Lock()
+}
+
+func (lk *LockProjectId) UnLock() (bool, error) {
+	return lk.m.Unlock()
+}